diff --git a/.github/workflows/build_binaries.yaml b/.github/workflows/build_binaries.yaml index f7908fad..b9062251 100755 --- a/.github/workflows/build_binaries.yaml +++ b/.github/workflows/build_binaries.yaml @@ -10,8 +10,8 @@ jobs: name: 'QMK Userspace Build' uses: qmk/.github/.github/workflows/qmk_userspace_build.yml@main with: - qmk_repo: qmk/qmk_firmware - qmk_ref: master + qmk_repo: splitkb/qmk_firmware + qmk_ref: halcyon-kyria publish: name: 'QMK Userspace Publish' diff --git a/README.md b/README.md index 25208997..2b646d63 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# QMK Userspace +# Splitkb QMK Userspace -This is a template repository which allows for an external set of QMK keymaps to be defined and compiled. This is useful for users who want to maintain their own keymaps without having to fork the main QMK repository. +This is the splitkb userspace repository which allows for an external set of QMK keymaps with halcyon modules to be defined and compiled. This is useful for users who want to maintain their own keymaps without having to fork the splitkb QMK or vial repository. + +If you want to compile firmware without any modules you can also use the [main qmk_userspace repo](https://github.com/qmk/qmk_userspace) but it would require some extra setup. + +If the keyboard has not been merged yet to the main branch of QMK you may need to edit the workflow, for that see [Extra info](#extra-info) ## Howto configure your build targets @@ -9,16 +13,25 @@ This is a template repository which allows for an external set of QMK keymaps to 1. Clone your fork to your local machine 1. Enable userspace in QMK config using `qmk config user.overlay_dir="$(realpath qmk_userspace)"` 1. Add a new keymap for your board using `qmk new-keymap` - * This will create a new keymap in the `keyboards` directory, in the same location that would normally be used in the main QMK repository. For example, if you wanted to add a keymap for the Planck, it will be created in `keyboards/planck/keymaps/` + * This will create a new keymap in the `keyboards` directory, in the same location that would normally be used in the main QMK repository. For example, if you wanted to add a keymap for the Halcyon Kyria, it will be created in `keyboards/splitkb/halcyon/kyria/` * You can also create a new keymap using `qmk new-keymap -kb -km ` - * Alternatively, add your keymap manually by placing it in the location specified above. - * `layouts///keymap.*` is also supported if you prefer the layout system -1. Add your keymap(s) to the build by running `qmk userspace-add -kb -km ` + * Alternatively, add your keymap manually by placing it in the location specified above. This may be easier if you want to copy the default keymap and change it to your liking. + * `layouts///keymap.*` is also supported if you prefer the layout system but has not been tested with our halcyon modules. +1. Rename or copy the `users/default` folder to the same name as your keymap name if you want to use a module. You don't have to do this if you don't want to use any modules. +1. Add your keymap(s) to the build by running `qmk userspace-add -kb -km -e =1 -e TARGET=` or `qmk userspace-add -kb -km ` if you don't plan to use any modules. * This will automatically update your `qmk.json` file - * Corresponding `qmk userspace-remove -kb -km ` will delete it - * Listing the build targets can be done with `qmk userspace-list` + * Corresponding `qmk userspace-remove -kb -km -e =1 -e TARGET=` or `qmk userspace-remove -kb -km ` will delete it + * Listing the build targets can be done with with `qmk userspace-list` + * If you want to use a module. + * For the filename make it so you can differentiate between the different firmwares for the modules. `kyria_rev4_default_encoder` for example. + * The following options are available for the halcyon modules: + * HLC_NONE, If you don't have a module installed but you do have a module on the other half. + * HLC_ENCODER, If you have an encoder module installed. + * HLC_TFT_DISPLAY, If you have a tft rgb display installed. + * HLC_CIRQUE_TRACKPAD, If you have a Cirque trackpad installed. 1. Commit your changes + ## Howto build with GitHub 1. In the GitHub Actions tab, enable workflows @@ -27,6 +40,7 @@ This is a template repository which allows for an external set of QMK keymaps to 1. Wait for the actions run to complete 1. Inspect the Releases tab on your repository for the latest firmware build + ## Howto build locally 1. Run the normal `qmk setup` procedure if you haven't already done so -- see [QMK Docs](https://docs.qmk.fm/#/newbs) for details. @@ -35,24 +49,25 @@ This is a template repository which allows for an external set of QMK keymaps to 1. `cd` into this repository's clone directory 1. Set global userspace path: `qmk config user.overlay_dir="$(realpath .)"` -- you MUST be located in the cloned userspace location for this to work correctly * This will be automatically detected if you've `cd`ed into your userspace repository, but the above makes your userspace available regardless of your shell location. -1. Compile normally: `qmk compile -kb your_keyboard -km your_keymap` or `make your_keyboard:your_keymap` +1. Compile normally: `qmk compile -kb your_keyboard -km your_keymap -e =1 -e TARGET=` or `make your_keyboard:your_keymap -e =1 -e TARGET=` Alternatively, if you configured your build targets above, you can use `qmk userspace-compile` to build all of your userspace targets at once. + ## Extra info If you wish to point GitHub actions to a different repository, a different branch, or even a different keymap name, you can modify `.github/workflows/build_binaries.yml` to suit your needs. -To override the `build` job, you can change the following parameters to use a different QMK repository or branch: +To override the `build` job, you can change the following parameters to use a different QMK repository or branch, this can be useful if you want to use a different QMK or vial branch for example: ``` with: - qmk_repo: qmk/qmk_firmware - qmk_ref: master + qmk_repo: splitkb/qmk_firmware + qmk_ref: halcyon-kyria ``` -If you wish to manually manage `qmk_firmware` using git within the userspace repository, you can add `qmk_firmware` as a submodule in the userspace directory instead. GitHub Actions will automatically use the submodule at the pinned revision if it exists, otherwise it will use the default latest revision of `qmk_firmware` from the main repository. +If you wish to manually manage `qmk_firmware` using git within the userspace repository, you can add `qmk_firmware` as a submodule in the userspace directory instead. GitHub Actions will automatically use the submodule at the pinned revision if it exists, otherwise it will use the default latest revision of `qmk_firmware` from the main repository. This will not work when using vial. -This can also be used to control which fork is used, though only upstream `qmk_firmware` will have support for external userspace until other manufacturers update their forks. +This can also be used to control which fork is used. 1. (First time only) `git submodule add https://github.com/qmk/qmk_firmware.git` 1. (To update) `git submodule update --init --recursive` diff --git a/examples/display/display.c b/examples/display/display.c new file mode 100644 index 00000000..39a88573 --- /dev/null +++ b/examples/display/display.c @@ -0,0 +1,66 @@ +// Include the main display functions so we don't have to initialize the display again +#include "hlc_tft_display/hlc_tft_display.h" + +// Include the QP api +#include "qp.h" + +// Add a font, this font is generated using the QP CLI tools (https://docs.qmk.fm/quantum_painter#quantum-painter-cli) +#include "graphics/thintel15.qff.h" + +// Initialize the font +static painter_font_handle_t thintel; + +// This function is ran on bootup of the keyboard +bool module_post_init_user(void) { + // Load the font in to memory. + thintel = qp_load_font_mem(font_thintel15); + + return false; +} + +// This function runs after every matrix scan +bool display_module_housekeeping_task_user(bool second_display) { + // Create checks to see if the displays are set. We don't need to keep updating the display with the same image so this will save some CPU time. + static bool display_set = false; + static bool second_display_set = false; + + // When the display isn't set, do the following + if (!display_set) { + // If it's the main display + if (!second_display) { + // Create text to write + static const char *text = "This is a user display!"; + + // Draw text on top left corner + qp_drawtext_recolor(lcd_surface, 0, 0, thintel, text, HSV_WHITE, HSV_BLACK); + + // Make sure to not run this again. + display_set = true; + // If it's the secundairy display + } else { + // Create text to write + static const char *text = "This is a second user display!"; + + // Read width from text + int16_t width = qp_textwidth(thintel, text); + + // Draw text on bottom right corner + qp_drawtext_recolor(lcd_surface, (LCD_WIDTH - width), (LCD_HEIGHT - thintel->line_height), thintel, text, HSV_WHITE, HSV_BLACK); + + // Make sure to not run this again. + display_set = true; + second_display_set = true; + } + } + + // Make sure that the second display loads correctly, sometimes it takes a little while for the keyboard to know it has a second display. + // So we reset the state and make it run again until the secondary display is drawn correctly + if(second_display && !second_display_set) { + display_set = false; + } + + // Move surface to lcd, this actually writes the content to the physical display + qp_surface_draw(lcd_surface, lcd, 0, 0, 0); + + return false; +} \ No newline at end of file diff --git a/examples/display/graphics/thintel15.qff.c b/examples/display/graphics/thintel15.qff.c new file mode 100644 index 00000000..237f2e9e --- /dev/null +++ b/examples/display/graphics/thintel15.qff.c @@ -0,0 +1,74 @@ +// Copyright 2022 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image -i thintel15.png -f mono2` + +#include + +const uint32_t font_thintel15_length = 966; + +// clang-format off +const uint8_t font_thintel15[966] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xC6, 0x03, 0x00, 0x00, 0x39, 0xFC, 0xFF, + 0xFF, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x02, 0x00, + 0x00, 0xC2, 0x00, 0x00, 0x84, 0x01, 0x00, 0x06, 0x03, 0x00, 0x46, 0x05, 0x00, 0x88, 0x07, 0x00, + 0x46, 0x0A, 0x00, 0x82, 0x0C, 0x00, 0x43, 0x0D, 0x00, 0x83, 0x0E, 0x00, 0xC4, 0x0F, 0x00, 0x46, + 0x11, 0x00, 0x83, 0x13, 0x00, 0xC5, 0x14, 0x00, 0x82, 0x16, 0x00, 0x44, 0x17, 0x00, 0xC5, 0x18, + 0x00, 0x84, 0x1A, 0x00, 0x05, 0x1C, 0x00, 0xC5, 0x1D, 0x00, 0x85, 0x1F, 0x00, 0x45, 0x21, 0x00, + 0x05, 0x23, 0x00, 0xC5, 0x24, 0x00, 0x85, 0x26, 0x00, 0x45, 0x28, 0x00, 0x02, 0x2A, 0x00, 0xC3, + 0x2A, 0x00, 0x05, 0x2C, 0x00, 0xC5, 0x2D, 0x00, 0x85, 0x2F, 0x00, 0x45, 0x31, 0x00, 0x08, 0x33, + 0x00, 0xC5, 0x35, 0x00, 0x85, 0x37, 0x00, 0x45, 0x39, 0x00, 0x05, 0x3B, 0x00, 0xC4, 0x3C, 0x00, + 0x44, 0x3E, 0x00, 0xC5, 0x3F, 0x00, 0x85, 0x41, 0x00, 0x44, 0x43, 0x00, 0xC5, 0x44, 0x00, 0x85, + 0x46, 0x00, 0x44, 0x48, 0x00, 0xC6, 0x49, 0x00, 0x06, 0x4C, 0x00, 0x45, 0x4E, 0x00, 0x05, 0x50, + 0x00, 0xC5, 0x51, 0x00, 0x85, 0x53, 0x00, 0x45, 0x55, 0x00, 0x06, 0x57, 0x00, 0x45, 0x59, 0x00, + 0x06, 0x5B, 0x00, 0x46, 0x5D, 0x00, 0x86, 0x5F, 0x00, 0xC6, 0x61, 0x00, 0x06, 0x64, 0x00, 0x44, + 0x66, 0x00, 0xC4, 0x67, 0x00, 0x44, 0x69, 0x00, 0xC6, 0x6A, 0x00, 0x05, 0x6D, 0x00, 0xC3, 0x6E, + 0x00, 0x05, 0x70, 0x00, 0xC5, 0x71, 0x00, 0x84, 0x73, 0x00, 0x05, 0x75, 0x00, 0xC5, 0x76, 0x00, + 0x84, 0x78, 0x00, 0x05, 0x7A, 0x00, 0xC5, 0x7B, 0x00, 0x82, 0x7D, 0x00, 0x43, 0x7E, 0x00, 0x85, + 0x7F, 0x00, 0x42, 0x81, 0x00, 0x06, 0x82, 0x00, 0x45, 0x84, 0x00, 0x05, 0x86, 0x00, 0xC5, 0x87, + 0x00, 0x85, 0x89, 0x00, 0x44, 0x8B, 0x00, 0xC5, 0x8C, 0x00, 0x83, 0x8E, 0x00, 0xC5, 0x8F, 0x00, + 0x86, 0x91, 0x00, 0xC6, 0x93, 0x00, 0x06, 0x96, 0x00, 0x45, 0x98, 0x00, 0x04, 0x9A, 0x00, 0x85, + 0x9B, 0x00, 0x42, 0x9D, 0x00, 0x05, 0x9E, 0x00, 0xC5, 0x9F, 0x00, 0x04, 0xFB, 0x86, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x54, 0x45, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFD, 0xD2, + 0xAF, 0x28, 0x00, 0x00, 0x00, 0x84, 0x53, 0x15, 0x0E, 0x55, 0x39, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x12, 0x15, 0x0A, 0x28, 0x54, 0x24, 0x00, 0x00, 0x00, 0x80, 0x50, 0x14, 0x52, 0x95, 0x58, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x4A, 0x92, 0x24, 0x02, 0x00, 0x91, 0x24, 0x49, 0x01, 0x00, 0x20, + 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x1F, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x24, 0x22, + 0x11, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, 0x20, 0x23, 0x22, 0x72, 0x00, 0x00, + 0xC0, 0x24, 0x44, 0x44, 0x78, 0x00, 0x00, 0xC0, 0x24, 0x44, 0x50, 0x32, 0x00, 0x00, 0x80, 0x29, + 0x95, 0x1E, 0x42, 0x00, 0x00, 0xE0, 0x85, 0x83, 0x50, 0x32, 0x00, 0x00, 0xC0, 0xA4, 0x70, 0x52, + 0x32, 0x00, 0x00, 0xE0, 0x21, 0x42, 0x84, 0x10, 0x00, 0x00, 0xC0, 0xA4, 0x64, 0x52, 0x32, 0x00, + 0x00, 0xC0, 0xA4, 0xE4, 0x50, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x30, 0x60, 0x0A, 0x00, + 0x00, 0x11, 0x11, 0x04, 0x41, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x08, + 0x82, 0x88, 0x08, 0x00, 0x00, 0xC0, 0x24, 0x64, 0x04, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x59, + 0x55, 0x2D, 0x02, 0x1C, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x3A, 0x00, 0x00, 0xC0, 0xA4, 0x10, 0x42, 0x32, 0x00, 0x00, 0xE0, 0xA4, 0x94, 0x52, + 0x3A, 0x00, 0x00, 0x70, 0x11, 0x17, 0x71, 0x00, 0x00, 0x70, 0x11, 0x17, 0x11, 0x00, 0x00, 0xC0, + 0xA4, 0xD0, 0x52, 0x32, 0x00, 0x00, 0x20, 0xA5, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0x70, 0x22, 0x22, + 0x72, 0x00, 0x00, 0xC0, 0x21, 0x84, 0x50, 0x32, 0x00, 0x00, 0x20, 0xA5, 0x32, 0x4A, 0x4A, 0x00, + 0x00, 0x10, 0x11, 0x11, 0x71, 0x00, 0x00, 0x40, 0xB4, 0x55, 0x51, 0x14, 0x45, 0x00, 0x00, 0x00, + 0x40, 0x34, 0x55, 0x59, 0x14, 0x45, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, + 0xE0, 0xA4, 0x74, 0x42, 0x08, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x51, 0x00, 0x00, 0xE0, 0xA4, + 0x74, 0x52, 0x4A, 0x00, 0x00, 0xC0, 0xA4, 0x60, 0x50, 0x32, 0x00, 0x00, 0xC0, 0x47, 0x10, 0x04, + 0x41, 0x10, 0x00, 0x00, 0x00, 0x20, 0xA5, 0x94, 0x52, 0x32, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, + 0xA4, 0x10, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, 0xB5, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, + 0x29, 0x84, 0x12, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x0E, 0x41, 0x10, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x21, 0x84, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x17, 0x11, 0x11, 0x11, 0x07, 0x00, 0x10, + 0x21, 0x22, 0x44, 0x00, 0x00, 0x47, 0x44, 0x44, 0x44, 0x07, 0x00, 0x84, 0x12, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x93, 0x5C, 0x72, 0x00, 0x00, 0x20, 0x84, 0x93, 0x52, 0x3A, 0x00, 0x00, 0x00, 0x60, + 0x11, 0x61, 0x00, 0x00, 0x00, 0x21, 0x97, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x93, 0x5E, 0x70, + 0x00, 0x00, 0x60, 0x11, 0x13, 0x11, 0x00, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x28, 0x19, 0x20, + 0x84, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x10, 0x55, 0x00, 0x80, 0x20, 0x49, 0x0A, 0x00, 0x20, 0x84, + 0x94, 0x4E, 0x4A, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x2C, 0x55, 0x55, 0x55, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x93, 0x52, 0x32, 0x00, 0x00, 0x00, + 0x80, 0x93, 0x52, 0x3A, 0x21, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x08, 0x01, 0x00, 0x50, 0x13, + 0x11, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0C, 0x3A, 0x00, 0x00, 0x48, 0x96, 0x44, 0x00, 0x00, 0x00, + 0x80, 0x94, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x44, 0x51, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x44, 0x51, 0x54, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0xA1, 0x44, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x94, 0x52, 0x72, 0x28, 0x19, 0x00, 0x70, 0x24, 0x71, 0x00, 0x00, 0x4C, 0x08, + 0x11, 0x84, 0x10, 0x0C, 0x00, 0x55, 0x55, 0x01, 0x83, 0x10, 0x82, 0x08, 0x21, 0x03, 0x00, 0x00, + 0x00, 0xB0, 0x1A, 0x00, 0x00, 0x00, +}; +// clang-format on diff --git a/examples/display/graphics/thintel15.qff.h b/examples/display/graphics/thintel15.qff.h new file mode 100644 index 00000000..8e64bb45 --- /dev/null +++ b/examples/display/graphics/thintel15.qff.h @@ -0,0 +1,11 @@ +// Copyright 2022 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image -i thintel15.png -f mono2` + +#pragma once + +#include + +extern const uint32_t font_thintel15_length; +extern const uint8_t font_thintel15[966]; diff --git a/examples/display/rules.mk b/examples/display/rules.mk new file mode 100644 index 00000000..e7e17fbb --- /dev/null +++ b/examples/display/rules.mk @@ -0,0 +1,5 @@ +# Include the display.c file during compilation +SRC += display.c + +# Include the font file +SRC += graphics/thintel15.qff.c \ No newline at end of file diff --git a/qmk.json b/qmk.json index 3afc389f..cdd3dc36 100644 --- a/qmk.json +++ b/qmk.json @@ -1,4 +1,37 @@ { - "userspace_version": "1.0", - "build_targets": [] + "userspace_version": "1.1", + "build_targets": [ + [ + "splitkb/halcyon/kyria/rev4", + "default", + { + "HLC_TFT_DISPLAY": "1", + "TARGET": "halcyon_kyria_rev4_default_display" + } + ], + [ + "splitkb/halcyon/kyria/rev4", + "default", + { + "HLC_ENCODER": "1", + "TARGET": "halcyon_kyria_rev4_default_encoder" + } + ], + [ + "splitkb/halcyon/kyria/rev4", + "default", + { + "HLC_CIRQUE_TRACKPAD": "1", + "TARGET": "halcyon_kyria_rev4_default_cirque_trackpad" + } + ], + [ + "splitkb/halcyon/kyria/rev4", + "default", + { + "HLC_NONE": "1", + "TARGET": "halcyon_kyria_rev4_default" + } + ] + ] } \ No newline at end of file diff --git a/users/default/config.h b/users/default/config.h new file mode 100644 index 00000000..11e8f2dc --- /dev/null +++ b/users/default/config.h @@ -0,0 +1,46 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define SPLIT_POINTING_ENABLE + +#define SPLIT_TRANSACTION_IDS_KB MODULE_SYNC + +#include_next + +#undef RP_SPI_USE_SPI1 +#define RP_SPI_USE_SPI1 TRUE + +#undef RP_PWM_USE_PWM5 +#define RP_PWM_USE_PWM5 TRUE + +#define HAL_USE_PWM TRUE +#define HAL_USE_SPI TRUE +#define SPI_USE_WAIT TRUE +#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD + +#define POINTING_DEVICE_COMBINED + +// Blank SPI config, otherwise a SPI module won't work as slave +#if !defined(HLC_SPI_DEVICE) + #define SPI_SCK_PIN GP0 //NOT CONNECTED + #define SPI_MOSI_PIN NO_PIN + #define SPI_MISO_PIN NO_PIN + + #undef SPI_SELECT_MODE + #define SPI_SELECT_MODE SPI_SELECT_MODE_NONE +#endif + +#if !defined(HLC_TFT_DISPLAY) + #define BACKLIGHT_PIN NO_PIN + #define BACKLIGHT_PWM_DRIVER PWMD5 + #define BACKLIGHT_LEVELS 10 + #define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B +#endif + +#if !defined(HLC_CIRQUE_TRACKPAD) + #define POINTING_DEVICE_CS_PIN GP2 //NOT CONNECTED +#endif + +#include_next \ No newline at end of file diff --git a/users/default/halcyon.c b/users/default/halcyon.c new file mode 100644 index 00000000..717d25a0 --- /dev/null +++ b/users/default/halcyon.c @@ -0,0 +1,94 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#include "halcyon.h" +#include "transactions.h" +#include "print.h" +#include "split_util.h" +#include "pointing_device.h" + +__attribute__((weak)) bool module_post_init_kb(void) { + return module_post_init_user(); +} +__attribute__((weak)) bool module_housekeeping_task_kb(void) { + return module_housekeeping_task_user(); +} +__attribute__((weak)) bool display_module_housekeeping_task_kb(bool second_display) { + return display_module_housekeeping_task_user(second_display); +} + +__attribute__((weak)) bool module_post_init_user(void) { + return true; +} +__attribute__((weak)) bool module_housekeeping_task_user(void) { + return true; +} +__attribute__((weak)) bool display_module_housekeeping_task_user(bool second_display) { + return true; +} + +module_t module; +#ifdef HLC_NONE + module_t module = hlc_none; +#endif +#ifdef HLC_CIRQUE_TRACKPAD + module_t module = hlc_cirque_trackpad; +#endif +#ifdef HLC_ENCODER + module_t module = hlc_encoder; +#endif +#ifdef HLC_TFT_DISPLAY + module_t module = hlc_tft_display; +#endif + +void module_sync_slave_handler(uint8_t initiator2target_buffer_size, const void* initiator2target_buffer, uint8_t target2initiator_buffer_size, void* target2initiator_buffer) { + if (initiator2target_buffer_size == sizeof(module)) { + memcpy(&module_master, initiator2target_buffer, sizeof(module_master)); + } +} + +void keyboard_post_init_kb(void) { + // Register module sync split transaction + transaction_register_rpc(MODULE_SYNC, module_sync_slave_handler); + + // Do any post init for modules + module_post_init_kb(); + + // User post init + keyboard_post_init_user(); +} + +void housekeeping_task_kb(void) { + if (is_keyboard_master()) { + static bool synced = 0; + if(is_transport_connected() && synced == 0) { + transaction_rpc_send(MODULE_SYNC, sizeof(module), &module); // Sync to slave + synced = 1; + } + display_module_housekeeping_task_kb(false); // Is master so can never be the second display + } + if (!is_keyboard_master()) { + if (module_master == hlc_tft_display) { + display_module_housekeeping_task_kb(true); // If there is a display on master, become the second display + } else { + display_module_housekeeping_task_kb(false); // Otherwise be the main display + } + } + module_housekeeping_task_kb(); + + housekeeping_task_user(); +} + +report_mouse_t pointing_device_task_combined_kb(report_mouse_t left_report, report_mouse_t right_report) { + // Only runs on master + // Fixes the following bug: If master is right and master is NOT a cirque trackpad, the inputs would be inverted. + if(module != hlc_cirque_trackpad && !is_keyboard_left()) { + mouse_xy_report_t x = left_report.x; + mouse_xy_report_t y = left_report.y; + left_report.x = -x; + left_report.y = -y; + } + return pointing_device_task_combined_user(left_report, right_report); +} \ No newline at end of file diff --git a/users/default/halcyon.h b/users/default/halcyon.h new file mode 100644 index 00000000..37e1cda4 --- /dev/null +++ b/users/default/halcyon.h @@ -0,0 +1,21 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +typedef enum module { + none, + hlc_none, + hlc_cirque_trackpad, + hlc_encoder, + hlc_tft_display +} module_t; + +module_t module_master; + +bool module_post_init_kb(void); +bool module_housekeeping_task_kb(void); +bool display_module_housekeeping_task_kb(bool second_display); +bool module_post_init_user(void); +bool module_housekeeping_task_user(void); +bool display_module_housekeeping_task_user(bool second_display); \ No newline at end of file diff --git a/users/default/hlc_cirque_trackpad/config.h b/users/default/hlc_cirque_trackpad/config.h new file mode 100644 index 00000000..6a4be5e5 --- /dev/null +++ b/users/default/hlc_cirque_trackpad/config.h @@ -0,0 +1,24 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +// Any QMK options should go here + +#pragma once + +#define HLC_SPI_DEVICE +#define HLC_CIRQUE_TRACKPAD + +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP14 +#define SPI_MOSI_PIN GP15 +#define SPI_MISO_PIN GP12 + +#define CIRQUE_PINNACLE_DIAMETER_MM 35 +#define POINTING_DEVICE_CS_PIN GP13 +#define POINTING_DEVICE_ROTATION_180 +#define CIRQUE_PINNACLE_CURVED_OVERLAY + +#define POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE +#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE +#define CIRQUE_PINNACLE_TAP_ENABLE +#define POINTING_DEVICE_GESTURES_SCROLL_ENABLE \ No newline at end of file diff --git a/users/default/hlc_cirque_trackpad/rules.mk b/users/default/hlc_cirque_trackpad/rules.mk new file mode 100644 index 00000000..6e49650c --- /dev/null +++ b/users/default/hlc_cirque_trackpad/rules.mk @@ -0,0 +1,7 @@ +CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) + +SPI_DRIVER_REQUIRED = yes +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = cirque_pinnacle_spi + +CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file diff --git a/users/default/hlc_encoder/config.h b/users/default/hlc_encoder/config.h new file mode 100644 index 00000000..825e51ab --- /dev/null +++ b/users/default/hlc_encoder/config.h @@ -0,0 +1,8 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +// Any QMK options should go here + +#pragma once + +#define HLC_ENCODER \ No newline at end of file diff --git a/users/default/hlc_encoder/hlc_encoder.c b/users/default/hlc_encoder/hlc_encoder.c new file mode 100644 index 00000000..f0dfa20e --- /dev/null +++ b/users/default/hlc_encoder/hlc_encoder.c @@ -0,0 +1,30 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "encoder.h" +#include "gpio.h" + +#include "hlc_encoder.h" + +static pin_t encoders_pad_a[NUM_ENCODERS_MAX_PER_SIDE] = ENCODER_A_PINS; +static pin_t encoders_pad_b[NUM_ENCODERS_MAX_PER_SIDE] = ENCODER_B_PINS; + +void encoder_quadrature_init_pin(uint8_t index, bool pad_b) { + pin_t pin = pad_b ? encoders_pad_b[index] : encoders_pad_a[index]; + encoders_pad_a[NUM_ENCODERS_MAX_PER_SIDE - 1] = HLC_ENCODER_A; + encoders_pad_b[NUM_ENCODERS_MAX_PER_SIDE - 1] = HLC_ENCODER_B; + if (pin != NO_PIN) { + gpio_set_pin_input_high(pin); + } +} + +uint8_t encoder_quadrature_read_pin(uint8_t index, bool pad_b) { + pin_t pin = pad_b ? encoders_pad_b[index] : encoders_pad_a[index]; + encoders_pad_a[NUM_ENCODERS_MAX_PER_SIDE - 1] = HLC_ENCODER_A; + encoders_pad_b[NUM_ENCODERS_MAX_PER_SIDE - 1] = HLC_ENCODER_B; + if (pin != NO_PIN) { + return gpio_read_pin(pin) ? 1 : 0; + } + return 0; +} \ No newline at end of file diff --git a/users/default/hlc_encoder/hlc_encoder.h b/users/default/hlc_encoder/hlc_encoder.h new file mode 100644 index 00000000..f10fc4ca --- /dev/null +++ b/users/default/hlc_encoder/hlc_encoder.h @@ -0,0 +1,9 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HLC_ENCODER_A GP27 +#define HLC_ENCODER_B GP26 + +#define HLC_ENCODER_BUTTON GP16 \ No newline at end of file diff --git a/users/default/hlc_encoder/hlc_encoder_matrix.c b/users/default/hlc_encoder/hlc_encoder_matrix.c new file mode 100644 index 00000000..aed0393c --- /dev/null +++ b/users/default/hlc_encoder/hlc_encoder_matrix.c @@ -0,0 +1,141 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "util.h" +#include "split_util.h" +#include "matrix.h" +#include "debounce.h" +#include "atomic_util.h" +#include "hlc_encoder.h" + +#ifdef SPLIT_KEYBOARD +# define ROWS_PER_HAND (MATRIX_ROWS / 2) +#else +# define ROWS_PER_HAND (MATRIX_ROWS) +#endif + +#ifdef MATRIX_ROW_PINS_RIGHT +# define SPLIT_MUTABLE_ROW +#else +# define SPLIT_MUTABLE_ROW const +#endif +#ifdef MATRIX_COL_PINS_RIGHT +# define SPLIT_MUTABLE_COL +#else +# define SPLIT_MUTABLE_COL const +#endif + +#ifndef MATRIX_INPUT_PRESSED_STATE +# define MATRIX_INPUT_PRESSED_STATE 0 +#endif + +#ifdef DIRECT_PINS +static SPLIT_MUTABLE pin_t direct_pins[ROWS_PER_HAND][MATRIX_COLS] = DIRECT_PINS; +#elif (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) +# ifdef MATRIX_ROW_PINS +static SPLIT_MUTABLE_ROW pin_t row_pins[ROWS_PER_HAND] = MATRIX_ROW_PINS; +# endif // MATRIX_ROW_PINS +# ifdef MATRIX_COL_PINS +static SPLIT_MUTABLE_COL pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +# endif // MATRIX_COL_PINS +#endif + +void matrix_init_kb(void) { + + gpio_set_pin_input_high(HLC_ENCODER_BUTTON); + + // Also need to define here otherwise right half is swapped + if (!isLeftHand) { + # ifdef MATRIX_ROW_PINS_RIGHT + const pin_t row_pins_right[ROWS_PER_HAND] = MATRIX_ROW_PINS_RIGHT; + for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { + row_pins[i] = row_pins_right[i]; + } + # endif + # ifdef MATRIX_COL_PINS_RIGHT + const pin_t col_pins_right[MATRIX_COLS] = MATRIX_COL_PINS_RIGHT; + for (uint8_t i = 0; i < MATRIX_COLS; i++) { + col_pins[i] = col_pins_right[i]; + } + # endif + } +} + +static inline void setPinOutput_writeLow(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + gpio_set_pin_output(pin); + gpio_write_pin_low(pin); + } +} + +static inline void setPinOutput_writeHigh(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + gpio_set_pin_output(pin); + gpio_write_pin_high(pin); + } +} + +static inline void setPinInputHigh_atomic(pin_t pin) { + ATOMIC_BLOCK_FORCEON { + gpio_set_pin_input_high(pin); + } +} + +static inline uint8_t readMatrixPin(pin_t pin) { + if (pin != NO_PIN) { + return (gpio_read_pin(pin) == MATRIX_INPUT_PRESSED_STATE) ? 0 : 1; + } else { + return 1; + } +} + +// THIS FUNCTION IS CHANGED, removed NO_PIN check +static bool select_row(uint8_t row) { + pin_t pin = row_pins[row]; + setPinOutput_writeLow(pin); + return true; +} + +static void unselect_row(uint8_t row) { + pin_t pin = row_pins[row]; + if (pin != NO_PIN) { +# ifdef MATRIX_UNSELECT_DRIVE_HIGH + setPinOutput_writeHigh(pin); +# else + setPinInputHigh_atomic(pin); +# endif + } +} + +void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row) { + // Start with a clear matrix row + matrix_row_t current_row_value = 0; + + if (!select_row(current_row)) { // Select row + return; // skip NO_PIN row + } + matrix_output_select_delay(); + + // ↓↓↓ THIS HAS BEEN ADDED/CHANGED + if (current_row == (ROWS_PER_HAND - 1)) { + current_row_value |= ((!gpio_read_pin(HLC_ENCODER_BUTTON)) & 1) << 0; + } else { + // For each col... + matrix_row_t row_shifter = MATRIX_ROW_SHIFTER; + for (uint8_t col_index = 0; col_index < MATRIX_COLS; col_index++, row_shifter <<= 1) { + uint8_t pin_state = readMatrixPin(col_pins[col_index]); + + // Populate the matrix row with the state of the col pin + current_row_value |= pin_state ? 0 : row_shifter; + } + } + // ↑↑↑ THIS HAS BEEN ADDED/CHANGED + + // Unselect row + unselect_row(current_row); + matrix_output_unselect_delay(current_row, current_row_value != 0); // wait for all Col signals to go HIGH + + // Update the matrix + current_matrix[current_row] = current_row_value; +} \ No newline at end of file diff --git a/users/default/hlc_encoder/rules.mk b/users/default/hlc_encoder/rules.mk new file mode 100644 index 00000000..7c560afa --- /dev/null +++ b/users/default/hlc_encoder/rules.mk @@ -0,0 +1,6 @@ +CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) + +ENCODER_DRIVER ?= quadrature + +SRC += $(CURRENT_DIR)/hlc_encoder.c $(CURRENT_DIR)/hlc_encoder_matrix.c +CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file diff --git a/users/default/hlc_tft_display/config.h b/users/default/hlc_tft_display/config.h new file mode 100644 index 00000000..3619fda2 --- /dev/null +++ b/users/default/hlc_tft_display/config.h @@ -0,0 +1,43 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +// Any QMK options should go here + +#pragma once + +#define HLC_SPI_DEVICE +#define HLC_TFT_DISPLAY + +#define SPI_DRIVER SPID1 +#define SPI_SCK_PIN GP14 +#define SPI_MOSI_PIN GP15 +#define SPI_MISO_PIN GP12 + +// LCD Configuration +#define LCD_RST_PIN GP26 +#define LCD_CS_PIN GP13 +#define LCD_DC_PIN GP16 +#define LCD_SPI_DIVISOR 0 +#define LCD_SPI_MODE 3 +#define LCD_WAIT_TIME 150 +#define LCD_WIDTH 135 +#define LCD_HEIGHT 240 +#define LCD_ROTATION QP_ROTATION_0 +#define LCD_OFFSET_X 52 +#define LCD_OFFSET_Y 40 + +// QP Configuration +#define QUANTUM_PAINTER_SUPPORTS_NATIVE_COLORS FALSE +#define ST7789_NO_AUTOMATIC_VIEWPORT_OFFSETS +#define ST7789_NUM_DEVICES 1 + +#define SURFACE_NUM_DEVICES 1 + +// Backlight configuration +#define BACKLIGHT_PIN GP27 +#define BACKLIGHT_PWM_DRIVER PWMD5 +#define BACKLIGHT_LEVELS 10 +#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B + +// Timeout configuration +#define QUANTUM_PAINTER_DISPLAY_TIMEOUT 120000 \ No newline at end of file diff --git a/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.c b/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.c new file mode 100644 index 00000000..6730eab4 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.c @@ -0,0 +1,288 @@ +// Copyright 2024 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/Retron2000-27.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --no-ascii False --unicode-glyphs --format mono2 --no-rle False` + +// Font's metadata +// --------------- +// Glyphs: , !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, =, >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~ + +#include + +const uint32_t font_Retron2000_27_length = 4330; + +// clang-format off +const uint8_t font_Retron2000_27[4330] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xEA, 0x10, 0x00, 0x00, 0x15, 0xEF, 0xFF, + 0xFF, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x09, 0x00, + 0x00, 0x86, 0x00, 0x00, 0x0C, 0x06, 0x00, 0xD2, 0x09, 0x00, 0xD2, 0x16, 0x00, 0x92, 0x26, 0x00, + 0x14, 0x34, 0x00, 0x46, 0x42, 0x00, 0xCC, 0x44, 0x00, 0xCC, 0x4D, 0x00, 0x0F, 0x57, 0x00, 0xD2, + 0x5C, 0x00, 0x48, 0x66, 0x00, 0xCF, 0x68, 0x00, 0x86, 0x6B, 0x00, 0x52, 0x6D, 0x00, 0xD2, 0x79, + 0x00, 0xD2, 0x86, 0x00, 0xD2, 0x93, 0x00, 0xD2, 0xA0, 0x00, 0xD2, 0xAD, 0x00, 0x92, 0xBA, 0x00, + 0x92, 0xC7, 0x00, 0x92, 0xD4, 0x00, 0x92, 0xE1, 0x00, 0x92, 0xEE, 0x00, 0x86, 0xFB, 0x00, 0x88, + 0xFE, 0x00, 0x0F, 0x02, 0x01, 0xD2, 0x0C, 0x01, 0x4F, 0x12, 0x01, 0x52, 0x1D, 0x01, 0x15, 0x29, + 0x01, 0x52, 0x38, 0x01, 0x52, 0x45, 0x01, 0x52, 0x52, 0x01, 0x52, 0x5F, 0x01, 0x52, 0x6C, 0x01, + 0x52, 0x79, 0x01, 0x12, 0x86, 0x01, 0x12, 0x93, 0x01, 0x12, 0xA0, 0x01, 0x12, 0xAD, 0x01, 0x12, + 0xBA, 0x01, 0x12, 0xC7, 0x01, 0x12, 0xD4, 0x01, 0x52, 0xE1, 0x01, 0x52, 0xEE, 0x01, 0x52, 0xFB, + 0x01, 0x12, 0x08, 0x02, 0x52, 0x15, 0x02, 0x52, 0x22, 0x02, 0x52, 0x2F, 0x02, 0x52, 0x3C, 0x02, + 0x52, 0x49, 0x02, 0x92, 0x56, 0x02, 0xD2, 0x63, 0x02, 0xD2, 0x70, 0x02, 0xD2, 0x7D, 0x02, 0xCC, + 0x8A, 0x02, 0x12, 0x94, 0x02, 0x0C, 0xA1, 0x02, 0x52, 0xAA, 0x02, 0xD2, 0xB0, 0x02, 0xC9, 0xB3, + 0x02, 0xD2, 0xB6, 0x02, 0x92, 0xC0, 0x02, 0x92, 0xCD, 0x02, 0x52, 0xD7, 0x02, 0x12, 0xE4, 0x02, + 0xCF, 0xED, 0x02, 0xD2, 0xF8, 0x02, 0x92, 0x05, 0x03, 0x86, 0x12, 0x03, 0x12, 0x18, 0x03, 0x4F, + 0x25, 0x03, 0x8C, 0x30, 0x03, 0xD2, 0x39, 0x03, 0x92, 0x43, 0x03, 0x52, 0x4D, 0x03, 0x12, 0x57, + 0x03, 0xD2, 0x63, 0x03, 0x92, 0x70, 0x03, 0x12, 0x7A, 0x03, 0xCF, 0x83, 0x03, 0x12, 0x8F, 0x03, + 0xD2, 0x98, 0x03, 0x92, 0xA2, 0x03, 0x52, 0xAC, 0x03, 0x92, 0xB6, 0x03, 0x52, 0xC3, 0x03, 0x0C, + 0xCD, 0x03, 0x06, 0xD6, 0x03, 0x0C, 0xDC, 0x03, 0x55, 0xE5, 0x03, 0x04, 0xFB, 0xAA, 0x0F, 0x00, + 0x22, 0x00, 0x02, 0x00, 0x8B, 0x70, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, + 0x07, 0x02, 0x00, 0x81, 0xC7, 0x71, 0x05, 0x00, 0x04, 0x00, 0x89, 0xC0, 0x71, 0x1C, 0xC7, 0x71, + 0x1C, 0xC7, 0x71, 0x1C, 0x07, 0x1F, 0x00, 0x07, 0x00, 0xAE, 0x38, 0x0E, 0xE0, 0x38, 0x80, 0xE3, + 0x00, 0x8E, 0x03, 0x38, 0x0E, 0xE0, 0x38, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0xE0, 0x38, + 0x80, 0xE3, 0x00, 0x8E, 0x03, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x8E, 0x03, 0x38, 0x0E, + 0xE0, 0x38, 0x80, 0xE3, 0x00, 0x8E, 0x03, 0x38, 0x0E, 0x0E, 0x00, 0xBB, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x77, 0x1F, 0xCF, 0x79, 0x1C, 0xC7, + 0x71, 0x1C, 0xC0, 0x73, 0x00, 0xDF, 0x01, 0xF8, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, 0x0F, 0xC0, 0x7D, + 0x00, 0xE7, 0x01, 0x1C, 0xC7, 0x71, 0x1C, 0xCF, 0x79, 0x7C, 0xF7, 0xE1, 0xFF, 0x03, 0xFF, 0x07, + 0xF8, 0x0F, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x08, 0x00, 0x07, 0x00, 0x89, 0x1E, 0x70, 0xFC, + 0xC0, 0x31, 0x03, 0xC7, 0x0C, 0x1C, 0x3F, 0x02, 0x78, 0x96, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, + 0x07, 0x02, 0x0F, 0x89, 0x7E, 0x1C, 0x98, 0x71, 0x60, 0xC6, 0x81, 0x1F, 0x07, 0x3C, 0x0E, 0x00, + 0x08, 0x00, 0xB3, 0xFE, 0x03, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0x7C, 0xF0, 0xC1, 0x03, 0x1E, 0x1C, + 0xC0, 0xC1, 0x01, 0x00, 0x3C, 0x00, 0xC0, 0x07, 0x00, 0xF8, 0x07, 0x00, 0x7F, 0x00, 0xF8, 0x07, + 0xC0, 0x07, 0x7E, 0x3C, 0xE0, 0xC7, 0x01, 0x7E, 0x1C, 0xE0, 0xC0, 0x03, 0x0F, 0x7C, 0xF8, 0x80, + 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0xFE, 0x01, 0x0F, 0x00, 0x02, 0x00, 0x84, 0x70, 0x1C, 0xC7, 0x71, + 0x1C, 0x10, 0x00, 0x05, 0x00, 0x9E, 0x70, 0x80, 0x07, 0x7C, 0xE0, 0x03, 0x1F, 0xF8, 0xC0, 0x07, + 0x3C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x3C, 0xC0, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x03, 0x7C, 0x80, 0x07, 0x70, 0x09, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x3C, 0xC0, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x03, 0x7C, 0x80, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x80, 0x07, + 0x7C, 0xE0, 0x03, 0x1F, 0xF8, 0xC0, 0x07, 0x3C, 0xC0, 0x01, 0x09, 0x00, 0x05, 0x00, 0x91, 0x80, + 0x03, 0xC7, 0xC3, 0xE3, 0xF3, 0xE1, 0x7F, 0xE0, 0x1F, 0xF8, 0x1F, 0x3E, 0x1F, 0x0F, 0x8F, 0x03, + 0x07, 0x22, 0x00, 0x0E, 0x00, 0xA0, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x15, 0x00, 0x15, 0x00, 0x04, 0x70, 0x84, 0x78, 0x7C, + 0x3E, 0x1E, 0x0E, 0x16, 0x00, 0x85, 0xC0, 0xFF, 0xE3, 0xFF, 0xF1, 0xFF, 0x1D, 0x00, 0x10, 0x00, + 0x81, 0xC7, 0x71, 0x05, 0x00, 0x08, 0x00, 0xAC, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x0F, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, + 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xF0, 0x71, 0xE0, 0xC7, 0xC1, 0x1F, 0x87, 0x7F, 0x1C, 0xDF, + 0x71, 0x3E, 0xC7, 0x7D, 0x1C, 0xFF, 0x70, 0xFC, 0xC1, 0xF1, 0x03, 0xC7, 0x07, 0x1C, 0x0F, 0x78, + 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x01, + 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x00, 0xCF, 0x01, 0x1C, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x0E, 0x00, 0x07, + 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x01, + 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0xE0, 0xFF, 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0x1F, 0x00, 0x3C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, + 0x7F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, + 0x78, 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0, + 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, + 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x08, 0x00, 0xAD, 0x0E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x38, 0xF0, + 0xE0, 0xC0, 0x83, 0x03, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x80, 0x03, 0x00, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x00, 0x80, 0x03, 0x00, 0x0E, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, + 0xFF, 0xF1, 0xFF, 0xC7, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC1, 0xFF, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, + 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, + 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC1, 0xFF, 0x0F, 0x07, 0x7C, 0x1C, 0xE0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, + 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0x01, 0x1C, 0x07, 0x70, + 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, + 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0xF8, 0xFF, 0xC0, + 0xFF, 0x81, 0xFF, 0x0F, 0x1F, 0x7C, 0x3C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, + 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, + 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1C, 0x1F, + 0x70, 0xF8, 0xFF, 0xC1, 0xFF, 0x07, 0xFE, 0x1F, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0xC7, 0x01, + 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, + 0x81, 0xC7, 0x71, 0x07, 0x00, 0x81, 0xC7, 0x71, 0x05, 0x00, 0x09, 0x00, 0x03, 0x70, 0x09, 0x00, + 0x04, 0x70, 0x84, 0x78, 0x7C, 0x3E, 0x1E, 0x0E, 0x07, 0x00, 0xA5, 0x07, 0xC0, 0x03, 0xF0, 0x01, + 0x7C, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, 0x7C, 0x00, 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF0, 0x01, + 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x00, + 0x70, 0x0C, 0x00, 0x14, 0x00, 0x86, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x07, 0x00, 0x86, + 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x1B, 0x00, 0x05, 0x00, 0xA6, 0x80, 0x03, 0xC0, 0x03, + 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x80, 0x0F, 0xE0, 0x03, + 0xF0, 0x00, 0x38, 0x0D, 0x00, 0x07, 0x00, 0xA0, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, + 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x08, 0x00, 0x85, 0x1C, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x0E, 0x00, 0x08, 0x00, 0x8A, 0xF0, 0xFF, 0x00, 0xFF, 0x1F, 0xF0, 0xFF, 0x03, 0x07, + 0x00, 0xE0, 0x02, 0x00, 0xA9, 0x1C, 0x00, 0x80, 0xC3, 0x1F, 0x70, 0xFC, 0x07, 0x8E, 0xFF, 0xC0, + 0x71, 0x1C, 0x38, 0x8E, 0x07, 0xC7, 0xF1, 0xE1, 0xF8, 0x7F, 0x1C, 0xFF, 0x8F, 0xC3, 0xFF, 0x71, + 0x00, 0x38, 0x0E, 0x00, 0xC7, 0x01, 0xE0, 0xF0, 0xFF, 0x0F, 0xFC, 0xFF, 0x00, 0xFF, 0x0F, 0x10, + 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, 0x01, + 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1E, 0x07, 0x7C, 0xFC, 0xFF, 0xF0, 0xFF, + 0xC1, 0xFF, 0x0F, 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x78, 0x1C, 0xF0, + 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, + 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, + 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, + 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x78, 0x1C, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x0E, + 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC7, 0x07, 0x00, 0x0F, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC0, 0xFF, 0x03, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0xFF, 0x07, 0xFF, + 0x1F, 0xF8, 0x7F, 0x0E, 0x00, 0x07, 0x00, 0xAD, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC7, 0x07, + 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, + 0xC0, 0xFF, 0x03, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x0F, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, + 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0xF8, 0x71, 0xE0, 0xC7, 0x81, 0x1F, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, + 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, + 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x0E, 0x00, + 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, + 0xFF, 0x7F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x7F, 0xE0, 0xFF, 0x81, 0xFF, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, + 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xE0, 0x71, + 0xC0, 0xC7, 0x81, 0x0F, 0x07, 0x1F, 0x1C, 0x3E, 0x70, 0x7C, 0xC0, 0xF9, 0x00, 0xF7, 0x01, 0xFC, + 0x03, 0xF0, 0x07, 0xC0, 0x3F, 0x00, 0xF7, 0x01, 0x9C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0x03, 0x07, + 0x1F, 0x1C, 0xF8, 0x70, 0xC0, 0xC7, 0x01, 0x1E, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x0E, 0x00, + 0x07, 0x00, 0x88, 0x07, 0x70, 0x3C, 0xE0, 0xF1, 0xC1, 0xC7, 0x8F, 0x1F, 0x02, 0x7F, 0xA3, 0xFC, + 0xFF, 0x71, 0x7F, 0xC7, 0xF9, 0x1C, 0xC7, 0x71, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x3C, 0xC0, 0xF1, 0x01, 0xC7, 0x0F, + 0x1C, 0x7F, 0x70, 0xFC, 0xC3, 0x71, 0x1F, 0xC7, 0xF9, 0x1C, 0xC7, 0x77, 0x1C, 0xFE, 0x71, 0xF0, + 0xC7, 0x81, 0x1F, 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, + 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, + 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, + 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAD, + 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1E, 0x07, 0x7C, 0xFC, 0xFF, 0xF0, 0xFF, 0xC1, 0xFF, 0x03, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x0F, 0x00, + 0x07, 0x00, 0xA2, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, + 0x1C, 0xCF, 0x71, 0x7C, 0xC7, 0xE1, 0x02, 0x0F, 0x89, 0x1F, 0x7C, 0xF8, 0xE0, 0xFF, 0x07, 0xFF, + 0x1E, 0xF8, 0x71, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, 0x01, + 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1E, 0x07, 0x7C, 0xFC, 0xFF, 0xF0, 0xFF, + 0xC1, 0xFF, 0x03, 0xF7, 0x01, 0x9C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0x03, 0x07, 0x1F, 0x1C, 0xF8, + 0x70, 0xC0, 0xC7, 0x01, 0x1E, 0x07, 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, + 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x03, 0x00, 0x1F, 0x00, + 0xF8, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, 0x1C, + 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0xAE, + 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x0E, + 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, + 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x07, 0x00, 0x93, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0x02, 0xF8, 0x98, 0xC0, + 0xE3, 0x01, 0x8E, 0x03, 0x38, 0x0E, 0xE0, 0x3D, 0x80, 0xFF, 0x00, 0xFC, 0x01, 0xE0, 0x03, 0x00, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x0E, 0x00, 0x07, 0x00, 0xA3, 0x07, 0x70, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, 0x9C, 0xCF, 0x71, 0x7F, 0xC7, 0xFF, + 0x1F, 0x02, 0x7F, 0x88, 0xFC, 0xF8, 0xF1, 0xC1, 0xC7, 0x03, 0x1E, 0x07, 0x70, 0x0E, 0x00, 0x07, + 0x00, 0xAE, 0x07, 0x70, 0x3C, 0xE0, 0xF1, 0xC1, 0x87, 0x8F, 0x0F, 0x7C, 0x1F, 0xE0, 0x3F, 0x00, + 0x7F, 0x00, 0xF8, 0x00, 0xF0, 0x07, 0xE0, 0x3F, 0xC0, 0xF7, 0x81, 0x8F, 0x0F, 0x1F, 0x7C, 0x3C, + 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, + 0x78, 0x7C, 0xF0, 0xE1, 0xE3, 0x03, 0xDF, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0x00, 0x3E, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x0E, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, + 0x07, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0F, 0x00, + 0x3C, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x0E, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x7F, + 0xFC, 0xC7, 0x7F, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, + 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x7F, 0xFC, 0xC7, 0x7F, 0x09, 0x00, + 0x07, 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x0F, 0x00, 0x7C, 0x00, + 0xE0, 0x03, 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xC0, 0x07, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0x80, 0x0F, + 0x00, 0x7C, 0x00, 0xE0, 0x03, 0x00, 0x1F, 0x00, 0x78, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x0E, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x7F, 0xFC, 0xC7, 0x7F, 0x00, 0x07, 0x70, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, + 0x70, 0x00, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0x09, 0x00, 0x07, 0x00, 0x8A, 0xC0, 0x01, 0x80, 0x0F, + 0x00, 0x7F, 0x00, 0xFE, 0x03, 0x7C, 0x1F, 0x02, 0xF8, 0x86, 0xF0, 0xC1, 0xC7, 0x03, 0x1E, 0x07, + 0x70, 0x29, 0x00, 0x2F, 0x00, 0x86, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x0E, 0x00, 0x03, + 0x00, 0x86, 0xE0, 0xC0, 0x83, 0x0F, 0x3E, 0x78, 0xE0, 0x18, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, + 0x00, 0xFE, 0x07, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0x80, 0x07, 0x00, 0x1C, 0xF8, 0x7F, 0xF0, 0xFF, + 0xE1, 0xFF, 0xC7, 0x07, 0x1C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, + 0x0E, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0xF0, 0xFF, 0xC0, 0xFF, 0x07, 0xFF, 0x3F, 0x1C, 0xF0, 0x71, 0x80, 0xC7, 0x01, 0x1C, + 0x07, 0x70, 0x3C, 0xC0, 0xF1, 0x01, 0xC7, 0x0F, 0x1C, 0x7F, 0x78, 0xFC, 0xF3, 0x71, 0xFF, 0xC3, + 0xF9, 0x07, 0xC7, 0x0F, 0x0E, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, 0xFF, 0x07, 0xFE, 0x3F, + 0x7C, 0xF0, 0xF1, 0x80, 0xC7, 0x01, 0x1C, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, + 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x08, 0x00, 0xAD, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x81, 0x1F, 0x07, 0xFF, + 0x1C, 0xFE, 0x77, 0x7C, 0xFE, 0xF1, 0xF0, 0xC7, 0x81, 0x1F, 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, + 0xC7, 0x01, 0x1C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x0E, 0x00, + 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, 0xFF, 0x07, 0xFE, 0x3F, 0x7C, 0xF0, 0xF1, 0x80, 0xC7, 0x01, + 0x1C, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0x01, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0xFF, + 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x0E, 0x00, 0x06, 0x00, 0x86, 0xFC, 0x00, 0xFF, 0xC0, 0xFF, 0xF0, + 0xF9, 0x02, 0x78, 0x9C, 0x1C, 0x38, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0xFF, 0xE3, 0xFF, 0xF1, + 0xFF, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x0D, 0x00, 0x14, 0x00, 0xAF, 0x80, 0xFF, 0x07, 0xFF, 0x1F, 0xFE, 0x7F, 0x7C, 0xC0, 0xF1, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xE0, 0x71, 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, 0x7C, + 0xFE, 0xE1, 0x7F, 0x07, 0xFF, 0x1C, 0xF8, 0x71, 0x00, 0xC0, 0x01, 0x80, 0x07, 0x00, 0x1F, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF0, 0xFF, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, + 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x70, 0x3C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x02, 0x00, 0x82, 0x70, 0x1C, 0x07, + 0x02, 0x00, 0x8A, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x05, 0x00, + 0x08, 0x00, 0x85, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x08, 0x00, 0xA6, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0xF8, 0xFF, 0xC0, 0xFF, + 0x01, 0xFE, 0x03, 0x07, 0x00, 0x05, 0x00, 0xA7, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x1C, 0x07, 0x8F, 0xC3, 0xC7, 0xF1, 0xE1, 0x7C, 0x70, 0x1F, 0xF8, + 0x07, 0xFC, 0x01, 0xFE, 0x01, 0xF7, 0x81, 0xF3, 0xC1, 0xF1, 0xE1, 0xF0, 0x71, 0xF0, 0x38, 0x70, + 0x0C, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, + 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x03, 0x7C, + 0x80, 0x7F, 0xF0, 0x07, 0x7E, 0x09, 0x00, 0x14, 0x00, 0xA1, 0xF0, 0xE3, 0xC0, 0xDF, 0x07, 0xFF, + 0x3F, 0xFC, 0xFF, 0xF1, 0xBE, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x14, 0x00, + 0xA1, 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, + 0x70, 0x3C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x0E, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, 0xFF, 0x07, 0xFE, 0x3F, 0x7C, + 0xF0, 0xF1, 0x80, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, + 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x0E, 0x00, 0x14, 0x00, 0xAD, 0x70, + 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x70, 0x3C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x78, 0x1C, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, + 0x0F, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x02, 0x00, 0x14, + 0x00, 0xAF, 0x80, 0xFF, 0x07, 0xFF, 0x1F, 0xFE, 0x7F, 0x7C, 0xC0, 0xF1, 0x00, 0xC7, 0x01, 0x1C, + 0x07, 0x70, 0x1C, 0xE0, 0x71, 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, 0x7C, 0xFE, 0xE1, 0x7F, 0x07, + 0xFF, 0x1C, 0xF8, 0x71, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x00, 0x07, 0x14, 0x00, 0xA0, 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, 0x87, + 0xC7, 0x0F, 0x1C, 0x1F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x0F, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x07, 0xFF, 0x1F, + 0xFE, 0x7F, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x00, 0xFE, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x03, + 0x00, 0x1F, 0x00, 0x78, 0x00, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x0E, 0x00, 0x05, + 0x00, 0xA7, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x1F, + 0xFF, 0x8F, 0xFF, 0xC7, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x70, 0x1C, 0x38, 0x0E, 0x1C, 0x07, + 0x8E, 0x87, 0xC7, 0xE7, 0xC3, 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0x0C, 0x00, 0x14, 0x00, 0xA1, 0x70, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, + 0xE0, 0x71, 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, 0x7C, 0xFE, 0xE1, 0x7F, 0x07, 0xFF, 0x1C, 0xF8, + 0x71, 0x0E, 0x00, 0x14, 0x00, 0xA1, 0x70, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x3C, 0xE0, 0xF1, 0xC1, 0x87, 0x8F, 0x0F, 0x7C, 0x1F, 0xE0, + 0x3F, 0x00, 0x7F, 0x00, 0xF8, 0x00, 0xC0, 0x01, 0x0E, 0x00, 0x14, 0x00, 0xA1, 0x70, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, + 0x1C, 0xC7, 0x71, 0x1C, 0xEF, 0x7B, 0xFC, 0xFF, 0xE1, 0xFF, 0x03, 0xDF, 0x07, 0x38, 0x0E, 0x0E, + 0x00, 0x14, 0x00, 0x86, 0x70, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0x02, 0xF8, 0x8F, 0xC0, 0xF7, + 0x01, 0xFE, 0x03, 0xF0, 0x07, 0x80, 0x0F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0x7C, 0x1F, 0x02, 0xF8, + 0x86, 0xF0, 0xC1, 0xC7, 0x03, 0x1E, 0x07, 0x70, 0x0E, 0x00, 0x14, 0x00, 0xAF, 0x70, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x3C, 0xC0, 0xF1, + 0x01, 0x87, 0xFF, 0x1F, 0xFC, 0x7F, 0xE0, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x80, 0x07, 0x00, 0x1F, 0xF8, 0x3F, 0xE0, 0x7F, 0x80, 0xFF, 0x00, 0x14, 0x00, 0xA1, + 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, + 0xFF, 0x7F, 0x0E, 0x00, 0x05, 0x00, 0x9E, 0x70, 0x80, 0x07, 0x7C, 0xE0, 0x03, 0x1E, 0xE0, 0x00, + 0x0E, 0xE0, 0x00, 0x0F, 0x7C, 0xC0, 0x03, 0x7C, 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x1E, + 0xE0, 0x03, 0x7C, 0x80, 0x07, 0x70, 0x09, 0x00, 0x02, 0x00, 0x94, 0x70, 0x1C, 0xC7, 0x71, 0x1C, + 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0x07, + 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x3C, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1E, 0xC0, 0x07, 0x78, 0xC0, 0x07, 0x1E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0xF8, 0xC0, 0x07, + 0x3C, 0xC0, 0x01, 0x09, 0x00, 0x10, 0x00, 0x89, 0xF8, 0x81, 0x83, 0x7F, 0x78, 0xF8, 0x9F, 0x8F, + 0xCF, 0xFF, 0x02, 0xF0, 0x82, 0x0F, 0x0E, 0xFC, 0x30, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.h b/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.h new file mode 100644 index 00000000..ecfbbb63 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/fonts/Retron2000-27.qff.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/Retron2000-27.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --no-ascii False --unicode-glyphs --format mono2 --no-rle False` + +#pragma once + +#include + +extern const uint32_t font_Retron2000_27_length; +extern const uint8_t font_Retron2000_27[4330]; diff --git a/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.c b/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.c new file mode 100644 index 00000000..610bebd7 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.c @@ -0,0 +1,320 @@ +// Copyright 2024 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/Retron2000-underline-27.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --no-ascii False --unicode-glyphs --format mono2 --no-rle False` + +// Font's metadata +// --------------- +// Glyphs: , !, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, :, ;, <, =, >, ?, @, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, {, |, }, ~ + +#include + +const uint32_t font_Retron2000_underline_27_length = 4839; + +// clang-format off +const uint8_t font_Retron2000_underline_27[4839] = { + 0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xE7, 0x12, 0x00, 0x00, 0x18, 0xED, 0xFF, + 0xFF, 0x1E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x09, 0x00, + 0x00, 0x06, 0x02, 0x00, 0x4C, 0x08, 0x00, 0x12, 0x0D, 0x00, 0x92, 0x1B, 0x00, 0x12, 0x2C, 0x00, + 0x14, 0x3B, 0x00, 0x46, 0x4A, 0x00, 0x0C, 0x4E, 0x00, 0x0C, 0x58, 0x00, 0x4F, 0x62, 0x00, 0x12, + 0x6A, 0x00, 0x08, 0x75, 0x00, 0x8F, 0x77, 0x00, 0x46, 0x7C, 0x00, 0xD2, 0x7E, 0x00, 0xD2, 0x8C, + 0x00, 0x52, 0x9B, 0x00, 0xD2, 0xA9, 0x00, 0x52, 0xB8, 0x00, 0xD2, 0xC6, 0x00, 0x12, 0xD5, 0x00, + 0x92, 0xE3, 0x00, 0x12, 0xF2, 0x00, 0x92, 0x00, 0x01, 0x12, 0x0F, 0x01, 0x86, 0x1D, 0x01, 0x48, + 0x21, 0x01, 0xCF, 0x24, 0x01, 0x92, 0x31, 0x01, 0x8F, 0x38, 0x01, 0x92, 0x45, 0x01, 0xD5, 0x52, + 0x01, 0x12, 0x64, 0x01, 0x92, 0x72, 0x01, 0x12, 0x81, 0x01, 0x92, 0x8F, 0x01, 0x12, 0x9E, 0x01, + 0x92, 0xAC, 0x01, 0xD2, 0xBA, 0x01, 0x52, 0xC9, 0x01, 0xD2, 0xD7, 0x01, 0x52, 0xE6, 0x01, 0xD2, + 0xF4, 0x01, 0x52, 0x03, 0x02, 0xD2, 0x11, 0x02, 0x92, 0x20, 0x02, 0x12, 0x2F, 0x02, 0x92, 0x3D, + 0x02, 0xD2, 0x4B, 0x02, 0x92, 0x5A, 0x02, 0x12, 0x69, 0x02, 0x92, 0x77, 0x02, 0x12, 0x86, 0x02, + 0x92, 0x94, 0x02, 0x52, 0xA3, 0x02, 0x12, 0xB2, 0x02, 0x92, 0xC0, 0x02, 0x12, 0xCF, 0x02, 0x8C, + 0xDD, 0x02, 0xD2, 0xE7, 0x02, 0x4C, 0xF6, 0x02, 0x92, 0x00, 0x03, 0x92, 0x08, 0x03, 0x09, 0x0D, + 0x03, 0x92, 0x11, 0x03, 0xD2, 0x1C, 0x03, 0x52, 0x2B, 0x03, 0x92, 0x36, 0x03, 0xD2, 0x44, 0x03, + 0x0F, 0x50, 0x03, 0x12, 0x5D, 0x03, 0xD2, 0x69, 0x03, 0x46, 0x78, 0x03, 0x92, 0x7E, 0x03, 0x8F, + 0x8C, 0x03, 0xCC, 0x99, 0x03, 0x12, 0xA4, 0x03, 0x52, 0xAF, 0x03, 0x92, 0xBA, 0x03, 0xD2, 0xC5, + 0x03, 0x92, 0xD2, 0x03, 0x52, 0xDF, 0x03, 0x52, 0xEA, 0x03, 0x8F, 0xF5, 0x03, 0xD2, 0x02, 0x04, + 0x12, 0x0E, 0x04, 0x52, 0x19, 0x04, 0x92, 0x24, 0x04, 0x52, 0x30, 0x04, 0x12, 0x3D, 0x04, 0x4C, + 0x48, 0x04, 0x46, 0x52, 0x04, 0x4C, 0x58, 0x04, 0x95, 0x62, 0x04, 0x04, 0xFB, 0xA7, 0x11, 0x00, + 0x1D, 0x00, 0x82, 0xFC, 0xFF, 0x0F, 0x02, 0x00, 0x02, 0x00, 0x8B, 0x70, 0x1C, 0xC7, 0x71, 0x1C, + 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0x07, 0x02, 0x00, 0x84, 0xC7, 0x71, 0x00, 0xF0, 0xFF, 0x02, + 0x00, 0x04, 0x00, 0x89, 0xC0, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0x07, 0x19, 0x00, + 0x03, 0xFF, 0x03, 0x00, 0x07, 0x00, 0xAE, 0x38, 0x0E, 0xE0, 0x38, 0x80, 0xE3, 0x00, 0x8E, 0x03, + 0x38, 0x0E, 0xE0, 0x38, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0xE0, 0x38, 0x80, 0xE3, 0x00, + 0x8E, 0x03, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x8E, 0x03, 0x38, 0x0E, 0xE0, 0x38, 0x80, + 0xE3, 0x00, 0x8E, 0x03, 0x38, 0x0E, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0xBE, 0x00, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x77, 0x1F, 0xCF, + 0x79, 0x1C, 0xC7, 0x71, 0x1C, 0xC0, 0x73, 0x00, 0xDF, 0x01, 0xF8, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xC0, 0x7D, 0x00, 0xE7, 0x01, 0x1C, 0xC7, 0x71, 0x1C, 0xCF, 0x79, 0x7C, 0xF7, 0xE1, 0xFF, + 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x00, 0x07, 0x00, 0x1C, 0xF0, 0x77, 0xFF, 0x1F, 0xFC, 0x05, 0x00, + 0x07, 0x00, 0x89, 0x1E, 0x70, 0xFC, 0xC0, 0x31, 0x03, 0xC7, 0x0C, 0x1C, 0x3F, 0x02, 0x78, 0x96, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x02, 0x0F, 0x89, 0x7E, 0x1C, 0x98, 0x71, 0x60, 0xC6, + 0x81, 0x1F, 0x07, 0x3C, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x08, 0x00, 0xB3, 0xFE, + 0x03, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0x7C, 0xF0, 0xC1, 0x03, 0x1E, 0x1C, 0xC0, 0xC1, 0x01, 0x00, + 0x3C, 0x00, 0xC0, 0x07, 0x00, 0xF8, 0x07, 0x00, 0x7F, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0x7E, 0x3C, + 0xE0, 0xC7, 0x01, 0x7E, 0x1C, 0xE0, 0xC0, 0x03, 0x0F, 0x7C, 0xF8, 0x80, 0xFF, 0x07, 0xF0, 0x3F, + 0x00, 0xFE, 0x01, 0x05, 0x00, 0x05, 0xFF, 0x05, 0x00, 0x02, 0x00, 0x84, 0x70, 0x1C, 0xC7, 0x71, + 0x1C, 0x0C, 0x00, 0x81, 0xF0, 0xFF, 0x02, 0x00, 0x05, 0x00, 0x9E, 0x70, 0x80, 0x07, 0x7C, 0xE0, + 0x03, 0x1F, 0xF8, 0xC0, 0x07, 0x3C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x3C, 0xC0, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x03, 0x7C, 0x80, 0x07, 0x70, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, + 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x3C, 0xC0, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x03, 0x7C, 0x80, 0x07, + 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x80, 0x07, 0x7C, 0xE0, 0x03, 0x1F, 0xF8, 0xC0, 0x07, + 0x3C, 0xC0, 0x01, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, 0x05, 0x00, 0x91, 0x80, 0x03, 0xC7, 0xC3, + 0xE3, 0xF3, 0xE1, 0x7F, 0xE0, 0x1F, 0xF8, 0x1F, 0x3E, 0x1F, 0x0F, 0x8F, 0x03, 0x07, 0x19, 0x00, + 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x0E, 0x00, 0xA0, 0x70, 0x00, 0xC0, 0x01, 0x00, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x0B, 0x00, 0x80, 0xF0, + 0x04, 0xFF, 0x05, 0x00, 0x15, 0x00, 0x04, 0x70, 0x84, 0x78, 0x7C, 0x3E, 0x1E, 0x0E, 0x16, 0x00, + 0x85, 0xC0, 0xFF, 0xE3, 0xFF, 0xF1, 0xFF, 0x14, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x04, + 0x00, 0x10, 0x00, 0x84, 0xC7, 0x71, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x08, 0x00, 0xAC, 0x70, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x05, 0x00, 0x80, 0xF0, 0x04, + 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, + 0x78, 0x1C, 0xF0, 0x71, 0xE0, 0xC7, 0xC1, 0x1F, 0x87, 0x7F, 0x1C, 0xDF, 0x71, 0x3E, 0xC7, 0x7D, + 0x1C, 0xFF, 0x70, 0xFC, 0xC1, 0xF1, 0x03, 0xC7, 0x07, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, + 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, + 0xF8, 0x01, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x00, 0xCF, 0x01, 0x1C, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, + 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, + 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0xE0, 0xFF, + 0xC0, 0xFF, 0x81, 0xFF, 0x03, 0x1F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, 0x07, 0x70, + 0x1C, 0xC0, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, + 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0x00, + 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, + 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x08, 0x00, 0xAD, 0x0E, 0x00, + 0x3C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x38, 0xF0, 0xE0, 0xC0, 0x83, 0x03, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x80, + 0x03, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x80, 0x03, 0x00, 0x0E, 0x04, 0x00, 0x80, 0xF0, + 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0x01, 0x00, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC1, + 0xFF, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, + 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, + 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC1, 0xFF, 0x0F, 0x07, 0x7C, 0x1C, 0xE0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, + 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, + 0xFF, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, + 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0xF8, 0xFF, 0xC0, 0xFF, 0x81, 0xFF, 0x0F, + 0x1F, 0x7C, 0x3C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, + 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, + 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, + 0x1C, 0x1F, 0x70, 0xF8, 0xFF, 0xC1, 0xFF, 0x07, 0xFE, 0x1F, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, + 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, + 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0x81, 0xC7, 0x71, 0x07, 0x00, 0x84, 0xC7, 0x71, + 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x09, 0x00, 0x03, 0x70, 0x09, 0x00, 0x04, 0x70, 0x84, 0x78, 0x7C, + 0x3E, 0x1E, 0x0E, 0x07, 0x00, 0xA5, 0x07, 0xC0, 0x03, 0xF0, 0x01, 0x7C, 0x00, 0x1F, 0xC0, 0x07, + 0xF0, 0x01, 0x7C, 0x00, 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, + 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x01, 0xF0, 0x00, 0x70, 0x03, 0x00, 0x80, 0xC0, + 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x14, 0x00, 0x86, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, + 0x07, 0x00, 0x86, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x11, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x05, 0x00, 0xA6, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, + 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0x38, 0x04, 0x00, 0x80, 0xC0, + 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x07, 0x00, 0xA0, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, + 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x08, 0x00, 0x85, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x08, 0x00, 0x8A, 0xF0, 0xFF, + 0x00, 0xFF, 0x1F, 0xF0, 0xFF, 0x03, 0x07, 0x00, 0xE0, 0x02, 0x00, 0xA9, 0x1C, 0x00, 0x80, 0xC3, + 0x1F, 0x70, 0xFC, 0x07, 0x8E, 0xFF, 0xC0, 0x71, 0x1C, 0x38, 0x8E, 0x07, 0xC7, 0xF1, 0xE1, 0xF8, + 0x7F, 0x1C, 0xFF, 0x8F, 0xC3, 0xFF, 0x71, 0x00, 0x38, 0x0E, 0x00, 0xC7, 0x01, 0xE0, 0xF0, 0xFF, + 0x0F, 0xFC, 0xFF, 0x00, 0xFF, 0x0F, 0x05, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x0F, 0x05, 0x00, + 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0xFF, 0x1F, 0x07, 0x70, + 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, + 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x0F, 0xFC, + 0x7F, 0xF0, 0xFF, 0xC3, 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1E, 0x07, + 0x7C, 0xFC, 0xFF, 0xF0, 0xFF, 0xC1, 0xFF, 0x0F, 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x78, 0x1C, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x04, 0x00, 0x80, 0xF0, + 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, + 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, + 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, + 0xAE, 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, + 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x78, 0x1C, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, + 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, + 0xFF, 0xC7, 0x07, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, + 0x3F, 0xF0, 0xFF, 0xC0, 0xFF, 0x03, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x0F, + 0x00, 0x7C, 0x00, 0xE0, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x07, 0x00, 0xAD, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC7, 0x07, 0x00, 0x0F, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0xFC, 0x3F, 0xF0, 0xFF, 0xC0, 0xFF, 0x03, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x05, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, + 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x01, 0x00, + 0x07, 0x00, 0x1C, 0xF8, 0x71, 0xE0, 0xC7, 0x81, 0x1F, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, + 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0xFC, 0xFF, 0xF1, 0xFF, + 0xC7, 0xFF, 0x1F, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, + 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, + 0x00, 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, + 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x7F, 0xE0, 0xFF, + 0x81, 0xFF, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0xC7, 0x01, 0x1C, + 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, + 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xE0, 0x71, 0xC0, 0xC7, 0x81, 0x0F, 0x07, + 0x1F, 0x1C, 0x3E, 0x70, 0x7C, 0xC0, 0xF9, 0x00, 0xF7, 0x01, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0xF7, 0x01, 0x9C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0x03, 0x07, 0x1F, 0x1C, 0xF8, 0x70, 0xC0, + 0xC7, 0x01, 0x1E, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, + 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0x88, 0x07, 0x70, 0x3C, 0xE0, 0xF1, 0xC1, + 0xC7, 0x8F, 0x1F, 0x02, 0x7F, 0xA3, 0xFC, 0xFF, 0x71, 0x7F, 0xC7, 0xF9, 0x1C, 0xC7, 0x71, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x3C, 0xC0, 0xF1, 0x01, 0xC7, 0x0F, 0x1C, 0x7F, 0x70, + 0xFC, 0xC3, 0x71, 0x1F, 0xC7, 0xF9, 0x1C, 0xC7, 0x77, 0x1C, 0xFE, 0x71, 0xF0, 0xC7, 0x81, 0x1F, + 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, + 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, + 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, + 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAD, 0xFF, 0x0F, 0xFC, 0x7F, 0xF0, 0xFF, 0xC3, + 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1E, 0x07, 0x7C, 0xFC, 0xFF, 0xF0, + 0xFF, 0xC1, 0xFF, 0x03, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x05, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, + 0x00, 0xA2, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, 0x0F, 0x78, 0x1C, 0xC0, 0x71, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, 0x1C, + 0xCF, 0x71, 0x7C, 0xC7, 0xE1, 0x02, 0x0F, 0x89, 0x1F, 0x7C, 0xF8, 0xE0, 0xFF, 0x07, 0xFF, 0x1E, + 0xF8, 0x71, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xFF, 0x0F, 0xFC, + 0x7F, 0xF0, 0xFF, 0xC3, 0x01, 0x1F, 0x07, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1E, 0x07, + 0x7C, 0xFC, 0xFF, 0xF0, 0xFF, 0xC1, 0xFF, 0x03, 0xF7, 0x01, 0x9C, 0x0F, 0x70, 0x7C, 0xC0, 0xE1, + 0x03, 0x07, 0x1F, 0x1C, 0xF8, 0x70, 0xC0, 0xC7, 0x01, 0x1E, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, + 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0xC3, 0x07, 0x1F, + 0x0F, 0x78, 0x1C, 0xC0, 0x71, 0x00, 0xC0, 0x03, 0x00, 0x1F, 0x00, 0xF8, 0x3F, 0xC0, 0xFF, 0x01, + 0xFE, 0x0F, 0x00, 0x7C, 0x00, 0xE0, 0x01, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, + 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, + 0xAE, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xC0, 0x71, + 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, + 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x07, 0x00, 0x93, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, + 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0x02, 0xF8, 0x98, 0xC0, 0xE3, 0x01, 0x8E, + 0x03, 0x38, 0x0E, 0xE0, 0x3D, 0x80, 0xFF, 0x00, 0xFC, 0x01, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xC0, 0x01, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xA3, + 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, 0x9C, 0xCF, 0x71, + 0x7F, 0xC7, 0xFF, 0x1F, 0x02, 0x7F, 0x88, 0xFC, 0xF8, 0xF1, 0xC1, 0xC7, 0x03, 0x1E, 0x07, 0x70, + 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x3C, 0xE0, 0xF1, + 0xC1, 0x87, 0x8F, 0x0F, 0x7C, 0x1F, 0xE0, 0x3F, 0x00, 0x7F, 0x00, 0xF8, 0x00, 0xF0, 0x07, 0xE0, + 0x3F, 0xC0, 0xF7, 0x81, 0x8F, 0x0F, 0x1F, 0x7C, 0x3C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, + 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, + 0x7C, 0xF0, 0xE1, 0xE3, 0x03, 0xDF, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0x00, 0x3E, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x00, 0xC0, 0x01, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0xFF, + 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x07, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, + 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x00, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, 0x00, + 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x7F, 0xFC, 0xC7, 0x7F, 0x1C, 0xC0, + 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, + 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x7F, 0xFC, 0xC7, 0x7F, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, 0x07, + 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0xE0, + 0x03, 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xC0, 0x07, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0x80, 0x0F, 0x00, + 0x7C, 0x00, 0xE0, 0x03, 0x00, 0x1F, 0x00, 0x78, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x7F, 0xFC, 0xC7, + 0x7F, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0xC7, 0x7F, 0xFC, 0xC7, 0x7F, 0x03, 0x00, 0x03, 0xFF, + 0x03, 0x00, 0x07, 0x00, 0x8A, 0xC0, 0x01, 0x80, 0x0F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0x7C, 0x1F, + 0x02, 0xF8, 0x86, 0xF0, 0xC1, 0xC7, 0x03, 0x1E, 0x07, 0x70, 0x1F, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x2F, 0x00, 0x86, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, 0x00, 0x80, 0xF0, + 0x04, 0xFF, 0x05, 0x00, 0x03, 0x00, 0x86, 0xE0, 0xC0, 0x83, 0x0F, 0x3E, 0x78, 0xE0, 0x13, 0x00, + 0x82, 0xFC, 0xFF, 0x0F, 0x02, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x3F, + 0x00, 0xF0, 0x01, 0x80, 0x07, 0x00, 0x1C, 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0xFF, 0xC7, 0x07, 0x1C, + 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, + 0xFF, 0x05, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0xFF, 0xC0, 0xFF, 0x07, 0xFF, 0x3F, 0x1C, 0xF0, 0x71, 0x80, 0xC7, 0x01, + 0x1C, 0x07, 0x70, 0x3C, 0xC0, 0xF1, 0x01, 0xC7, 0x0F, 0x1C, 0x7F, 0x78, 0xFC, 0xF3, 0x71, 0xFF, + 0xC3, 0xF9, 0x07, 0xC7, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, + 0x80, 0xFF, 0x00, 0xFF, 0x07, 0xFE, 0x3F, 0x7C, 0xF0, 0xF1, 0x80, 0xC7, 0x01, 0x1C, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, + 0xF8, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x08, 0x00, 0xAD, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x81, 0x1F, 0x07, 0xFF, 0x1C, 0xFE, 0x77, + 0x7C, 0xFE, 0xF1, 0xF0, 0xC7, 0x81, 0x1F, 0x07, 0x7C, 0x1C, 0xE0, 0x71, 0x00, 0xC7, 0x01, 0x1C, + 0x0F, 0x70, 0x7C, 0xC0, 0xE1, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, + 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, 0xFF, 0x07, 0xFE, 0x3F, 0x7C, 0xF0, 0xF1, + 0x80, 0xC7, 0x01, 0x1C, 0xFF, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0xC7, 0x01, 0x00, 0x0F, 0x00, 0x7C, + 0x00, 0xE0, 0xFF, 0x07, 0xFF, 0x1F, 0xF8, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, + 0x06, 0x00, 0x86, 0xFC, 0x00, 0xFF, 0xC0, 0xFF, 0xF0, 0xF9, 0x02, 0x78, 0x9C, 0x1C, 0x38, 0x0E, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0xFF, 0xE3, 0xFF, 0xF1, 0xFF, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, + 0x80, 0x0F, 0x04, 0x00, 0x14, 0x00, 0xAF, 0x80, 0xFF, 0x07, 0xFF, 0x1F, 0xFE, 0x7F, 0x7C, 0xC0, + 0xF1, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xE0, 0x71, 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, + 0x7C, 0xFE, 0xE1, 0x7F, 0x07, 0xFF, 0x1C, 0xF8, 0x71, 0x00, 0xC0, 0x01, 0x80, 0x17, 0x00, 0x5F, + 0xFF, 0x3F, 0xFC, 0x7F, 0xF0, 0xFF, 0x00, 0x07, 0x00, 0xAE, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, + 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, + 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x70, 0x3C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, + 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, + 0x00, 0x02, 0x00, 0x82, 0x70, 0x1C, 0x07, 0x02, 0x00, 0x8D, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, + 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x00, 0xF0, 0xFF, 0x02, 0x00, 0x08, 0x00, 0x85, 0x70, 0x00, 0xC0, + 0x01, 0x00, 0x07, 0x08, 0x00, 0xA5, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, + 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x71, + 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0xF8, 0xFF, 0xC0, 0xFF, 0x71, 0xFE, 0x02, 0xF3, 0x80, 0xE7, + 0x05, 0x00, 0x05, 0x00, 0xA7, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x1C, 0x07, 0x8F, 0xC3, 0xC7, 0xF1, 0xE1, 0x7C, 0x70, 0x1F, 0xF8, 0x07, 0xFC, 0x01, + 0xFE, 0x01, 0xF7, 0x81, 0xF3, 0xC1, 0xF1, 0xE1, 0xF0, 0x71, 0xF0, 0x38, 0x70, 0x03, 0x00, 0x80, + 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, + 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, 0x01, 0x1C, 0xC0, + 0x01, 0x1C, 0xC0, 0x03, 0x7C, 0x80, 0x7F, 0xF0, 0x07, 0x7E, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, + 0x14, 0x00, 0xA1, 0xF0, 0xE3, 0xC0, 0xDF, 0x07, 0xFF, 0x3F, 0xFC, 0xFF, 0xF1, 0xBE, 0xC7, 0x71, + 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, + 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, + 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x70, + 0x3C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, + 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x00, + 0xFF, 0x07, 0xFE, 0x3F, 0x7C, 0xF0, 0xF1, 0x80, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, + 0x00, 0xC7, 0x01, 0x1C, 0x0F, 0x78, 0x7C, 0xF0, 0xE1, 0xFF, 0x03, 0xFF, 0x07, 0xF8, 0x0F, 0x04, + 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xAD, 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, + 0x3F, 0xFC, 0xF3, 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x70, 0x3C, 0xC0, 0x71, 0x00, 0xC7, 0x01, + 0x1C, 0x07, 0x78, 0x1C, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x1C, 0x00, 0x70, 0x00, + 0xD0, 0xFD, 0x7F, 0xF7, 0xFF, 0x1C, 0x00, 0x70, 0x02, 0x00, 0x14, 0x00, 0xAF, 0x80, 0xFF, 0x07, + 0xFF, 0x1F, 0xFE, 0x7F, 0x7C, 0xC0, 0xF1, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xE0, 0x71, + 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, 0x7C, 0xFE, 0xE1, 0x7F, 0x07, 0xFF, 0x1C, 0xF8, 0x71, 0x00, + 0xC0, 0x01, 0x00, 0xF7, 0xFF, 0xDD, 0xFF, 0x77, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x14, 0x00, 0xA0, + 0x70, 0xFC, 0xC0, 0xF9, 0x07, 0xF7, 0x3F, 0xFC, 0xF3, 0xF1, 0x87, 0xC7, 0x0F, 0x1C, 0x1F, 0x00, + 0x3C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, + 0x07, 0x05, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, 0x80, 0xFF, 0x07, 0xFF, + 0x1F, 0xFE, 0x7F, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x00, 0xFE, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, + 0x03, 0x00, 0x1F, 0x00, 0x78, 0x00, 0xF0, 0xF1, 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0x0F, 0x04, 0x00, + 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x05, 0x00, 0xA7, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xC7, 0x01, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x70, 0x1C, 0x38, 0x0E, 0x1C, 0x07, 0x8E, 0x87, 0xC7, 0xE7, 0xC3, 0xFF, 0xC0, 0x3F, 0xC0, + 0x0F, 0x03, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x14, 0x00, 0xA1, 0x70, 0x00, + 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xE0, + 0x71, 0xC0, 0xC7, 0x81, 0x1F, 0x0F, 0x7F, 0x7C, 0xFE, 0xE1, 0x7F, 0x07, 0xFF, 0x1C, 0xF8, 0x71, + 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, 0x70, 0x00, 0xC7, 0x01, 0x1C, + 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x3C, 0xE0, 0xF1, 0xC1, 0x87, + 0x8F, 0x0F, 0x7C, 0x1F, 0xE0, 0x3F, 0x00, 0x7F, 0x00, 0xF8, 0x00, 0xC0, 0x01, 0x04, 0x00, 0x80, + 0xF0, 0x04, 0xFF, 0x05, 0x00, 0x14, 0x00, 0xA1, 0x70, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, + 0xC0, 0x71, 0x00, 0xC7, 0x01, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xEF, + 0x7B, 0xFC, 0xFF, 0xE1, 0xFF, 0x03, 0xDF, 0x07, 0x38, 0x0E, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, + 0x05, 0x00, 0x14, 0x00, 0x86, 0x70, 0x00, 0xC7, 0x03, 0x1E, 0x1F, 0x7C, 0x02, 0xF8, 0x8F, 0xC0, + 0xF7, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0x80, 0x0F, 0x00, 0x7F, 0x00, 0xFE, 0x03, 0x7C, 0x1F, 0x02, + 0xF8, 0x86, 0xF0, 0xC1, 0xC7, 0x03, 0x1E, 0x07, 0x70, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, + 0x00, 0x14, 0x00, 0xAF, 0x70, 0x00, 0xC7, 0x01, 0x1C, 0x07, 0x70, 0x1C, 0xC0, 0x71, 0x00, 0xC7, + 0x01, 0x1C, 0x07, 0x70, 0x3C, 0xC0, 0xF1, 0x01, 0x87, 0xFF, 0x1F, 0xFC, 0x7F, 0xE0, 0xFF, 0x01, + 0x00, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0xF7, 0x00, 0xDF, 0xFB, 0x3F, 0xE0, + 0x7F, 0x80, 0xFF, 0x00, 0x14, 0x00, 0xA1, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x00, 0xF8, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x00, 0xF0, 0xFF, 0xC7, 0xFF, 0x1F, 0xFF, 0x7F, 0x04, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x05, + 0x00, 0x05, 0x00, 0x9E, 0x70, 0x80, 0x07, 0x7C, 0xE0, 0x03, 0x1E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x0F, 0x7C, 0xC0, 0x03, 0x7C, 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x1E, 0xE0, 0x03, 0x7C, + 0x80, 0x07, 0x70, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x94, 0x70, 0x1C, 0xC7, 0x71, + 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xC7, 0x71, 0x1C, 0xD7, 0x75, 0x1C, + 0x07, 0x04, 0x00, 0x9F, 0xC0, 0x01, 0x3C, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1E, 0xC0, 0x07, 0x78, 0xC0, 0x07, 0x1E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0xF8, 0xC0, + 0x07, 0x3C, 0xC0, 0x01, 0x03, 0x00, 0x03, 0xFF, 0x03, 0x00, 0x10, 0x00, 0x89, 0xF8, 0x81, 0x83, + 0x7F, 0x78, 0xF8, 0x9F, 0x8F, 0xCF, 0xFF, 0x02, 0xF0, 0x82, 0x0F, 0x0E, 0xFC, 0x25, 0x00, 0x80, + 0xFC, 0x04, 0xFF, 0x80, 0x0F, 0x05, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.h b/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.h new file mode 100644 index 00000000..dd0e3558 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/fonts/Retron2000-underline-27.qff.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, font retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-font-image --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/Retron2000-underline-27.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --no-ascii False --unicode-glyphs --format mono2 --no-rle False` + +#pragma once + +#include + +extern const uint32_t font_Retron2000_underline_27_length; +extern const uint8_t font_Retron2000_underline_27[4839]; diff --git a/users/default/hlc_tft_display/graphics/numbers/0.qgf.c b/users/default/hlc_tft_display/graphics/numbers/0.qgf.c new file mode 100644 index 00000000..cd3d8da6 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/0.qgf.c @@ -0,0 +1,72 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/0.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_0_length = 843; + +// clang-format off +const uint8_t gfx_0[843] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x4B, 0x03, 0x00, 0x00, 0xB4, 0xFC, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x1B, 0x03, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, + 0x04, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, + 0x04, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, + 0x04, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, + 0x80, 0x1F, 0x03, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, + 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, + 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, + 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, 0x82, 0x03, 0x00, 0xC0, 0x06, 0xFF, 0x80, 0x1F, 0x02, 0x00, + 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, 0x07, 0x00, 0x80, 0x06, 0xFF, + 0x82, 0x3F, 0x00, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, 0x03, 0xFF, 0x81, 0x01, 0x00, 0x03, 0xFF, + 0x80, 0xC1, 0x03, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x02, 0xFF, 0x81, 0x0F, 0xFE, 0x02, 0xFF, 0x82, + 0x7F, 0x00, 0xC0, 0x02, 0xFF, 0x81, 0x7F, 0xF0, 0x03, 0xFF, 0x82, 0x03, 0x00, 0xFE, 0x02, 0xFF, + 0x80, 0x83, 0x03, 0xFF, 0x81, 0x1F, 0x80, 0x03, 0xFF, 0x81, 0x00, 0xFC, 0x03, 0xFF, 0x81, 0x00, + 0xFC, 0x02, 0xFF, 0x81, 0x07, 0xE0, 0x03, 0xFF, 0x81, 0x07, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0x00, + 0x03, 0xFF, 0x81, 0x3F, 0x00, 0x03, 0xFF, 0x81, 0x01, 0xF8, 0x03, 0xFF, 0x81, 0x01, 0xF8, 0x02, + 0xFF, 0x81, 0x0F, 0xC0, 0x03, 0xFF, 0x81, 0x0F, 0xFE, 0x02, 0xFF, 0x82, 0x03, 0x00, 0xFE, 0x02, + 0xFF, 0x81, 0x7F, 0xF0, 0x02, 0xFF, 0x82, 0x1F, 0x00, 0xF0, 0x03, 0xFF, 0x80, 0x83, 0x03, 0xFF, + 0x81, 0x00, 0x80, 0x03, 0xFF, 0x81, 0x1F, 0xFC, 0x02, 0xFF, 0x82, 0x07, 0x00, 0xFC, 0x03, 0xFF, + 0x80, 0xE0, 0x02, 0xFF, 0x82, 0x3F, 0x00, 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, + 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, 0x82, 0x03, 0x00, 0xC0, 0x06, 0xFF, 0x80, 0x1F, + 0x02, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, 0x00, + 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, + 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, + 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, + 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, + 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, + 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, 0x03, 0x00, + 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, 0x03, 0x00, + 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, + 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x05, 0xFF, + 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, + 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, + 0x02, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, + 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, + 0x81, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, + 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, 0xFF, 0x80, + 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, + 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/0.qgf.h b/users/default/hlc_tft_display/graphics/numbers/0.qgf.h new file mode 100644 index 00000000..da0b1cfa --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/0.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/0.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_0_length; +extern const uint8_t gfx_0[843]; diff --git a/users/default/hlc_tft_display/graphics/numbers/1.qgf.c b/users/default/hlc_tft_display/graphics/numbers/1.qgf.c new file mode 100644 index 00000000..5ecdfb31 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/1.qgf.c @@ -0,0 +1,61 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/1.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_1_length = 664; + +// clang-format off +const uint8_t gfx_1[664] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x98, 0x02, 0x00, 0x00, 0x67, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x68, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, + 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, + 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, 0x04, 0x00, 0x80, 0xF0, 0x03, + 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0xFC, 0x03, + 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, + 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, + 0x01, 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, + 0x7F, 0x03, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x83, 0x3F, 0xF8, 0xFF, 0x03, 0x03, 0x00, 0x03, 0xFF, + 0x82, 0xC1, 0xFF, 0x1F, 0x03, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x82, 0x0F, 0xFE, 0xFF, 0x03, 0x00, + 0x80, 0xC0, 0x02, 0xFF, 0x83, 0x7F, 0xF0, 0xFF, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x82, + 0x83, 0xFF, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x83, 0x00, 0xFC, 0xFF, 0x01, 0x02, 0x00, + 0x80, 0x80, 0x02, 0xFF, 0x83, 0x07, 0xE0, 0xFF, 0x0F, 0x03, 0x00, 0x85, 0xFC, 0xFF, 0x3F, 0x00, + 0xFF, 0x7F, 0x03, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x83, 0x01, 0xF8, 0xFF, 0x03, 0x03, 0x00, 0x02, + 0xFF, 0x83, 0x0F, 0xC0, 0xFF, 0x1F, 0x03, 0x00, 0x85, 0xF8, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x03, + 0x00, 0x86, 0xC0, 0xFF, 0x1F, 0x00, 0xF0, 0xFF, 0x07, 0x03, 0x00, 0x85, 0xFE, 0xFF, 0x00, 0x80, + 0xFF, 0x3F, 0x03, 0x00, 0x86, 0xF0, 0xFF, 0x07, 0x00, 0xFC, 0xFF, 0x01, 0x02, 0x00, 0x86, 0x80, + 0xFF, 0x3F, 0x00, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, + 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, + 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, + 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, + 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, + 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, + 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, + 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, + 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, + 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, + 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, + 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, + 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, + 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, + 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, + 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, + 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, + 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, + 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, + 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, + 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, + 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x03, 0x00, + 0x80, 0xC0, 0x7F, 0xFF, 0x0D, 0xFF, 0x80, 0x07, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/1.qgf.h b/users/default/hlc_tft_display/graphics/numbers/1.qgf.h new file mode 100644 index 00000000..9ee96798 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/1.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/1.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_1_length; +extern const uint8_t gfx_1[664]; diff --git a/users/default/hlc_tft_display/graphics/numbers/2.qgf.c b/users/default/hlc_tft_display/graphics/numbers/2.qgf.c new file mode 100644 index 00000000..1eae9341 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/2.qgf.c @@ -0,0 +1,62 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/2.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_2_length = 674; + +// clang-format off +const uint8_t gfx_2[674] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xA2, 0x02, 0x00, 0x00, 0x5D, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x72, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x82, 0xF8, + 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, + 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, + 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, 0x80, 0xC0, 0x02, + 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, 0xFE, 0xFF, 0x1F, 0x06, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x06, + 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, + 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, + 0xC0, 0x02, 0xFF, 0x82, 0x7F, 0x00, 0xC0, 0x06, 0xFF, 0x80, 0x1F, 0x02, 0x00, 0x80, 0xFE, 0x06, + 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, + 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x81, 0x01, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, + 0x06, 0xFF, 0x82, 0x03, 0x00, 0xC0, 0x06, 0xFF, 0x80, 0x1F, 0x02, 0x00, 0x80, 0xFE, 0x06, 0xFF, + 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, 0x07, 0x00, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, 0xE0, + 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, + 0x82, 0x03, 0x00, 0xC0, 0x06, 0xFF, 0x82, 0x1F, 0x00, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, + 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x82, 0xF8, 0xFF, 0x7F, + 0x06, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, 0xFE, 0xFF, 0x1F, 0x06, 0x00, + 0x80, 0xF0, 0x02, 0xFF, 0x06, 0x00, 0x80, 0x80, 0x02, 0xFF, 0x80, 0x07, 0x06, 0x00, 0x82, 0xFC, + 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, + 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, + 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, + 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, + 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, + 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, + 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x7F, + 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, 0x7F, 0xFF, 0x0F, 0xFF, + 0x80, 0x07, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/2.qgf.h b/users/default/hlc_tft_display/graphics/numbers/2.qgf.h new file mode 100644 index 00000000..b50aef41 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/2.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/2.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_2_length; +extern const uint8_t gfx_2[674]; diff --git a/users/default/hlc_tft_display/graphics/numbers/3.qgf.c b/users/default/hlc_tft_display/graphics/numbers/3.qgf.c new file mode 100644 index 00000000..d5359ea2 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/3.qgf.c @@ -0,0 +1,68 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/3.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_3_length = 781; + +// clang-format off +const uint8_t gfx_3[781] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x0D, 0x03, 0x00, 0x00, 0xF2, 0xFC, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xDD, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x82, 0xF8, + 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, + 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, + 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, 0x80, 0xC0, 0x02, + 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, 0xFE, 0xFF, 0x1F, 0x06, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x06, + 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, + 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, + 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, + 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, + 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, 0x03, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, + 0x7F, 0x04, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0x04, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x05, 0x00, 0x04, 0xFF, 0x80, 0x07, 0x04, 0x00, 0x80, + 0xF8, 0x04, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, + 0xFE, 0x04, 0xFF, 0x80, 0x01, 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, + 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, + 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, + 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x06, 0x00, 0x82, 0xFC, 0xFF, + 0x3F, 0x06, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x01, 0x06, 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, + 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, + 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, + 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, + 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, + 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, + 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, + 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, + 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, + 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, + 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, + 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, + 0x08, 0xFF, 0x81, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, + 0x01, 0x00, 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, + 0xF8, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, + 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, + 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/3.qgf.h b/users/default/hlc_tft_display/graphics/numbers/3.qgf.h new file mode 100644 index 00000000..e5784c9f --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/3.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/3.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_3_length; +extern const uint8_t gfx_3[781]; diff --git a/users/default/hlc_tft_display/graphics/numbers/4.qgf.c b/users/default/hlc_tft_display/graphics/numbers/4.qgf.c new file mode 100644 index 00000000..af90e16e --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/4.qgf.c @@ -0,0 +1,64 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/4.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_4_length = 718; + +// clang-format off +const uint8_t gfx_4[718] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xCE, 0x02, 0x00, 0x00, 0x31, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x9E, 0x02, 0x00, + 0x05, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, + 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x06, 0x00, 0x80, 0x80, + 0x02, 0xFF, 0x80, 0x07, 0x06, 0x00, 0x82, 0xFC, 0xFF, 0x3F, 0x06, 0x00, 0x80, 0xE0, 0x02, 0xFF, + 0x80, 0x01, 0x06, 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, + 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, + 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xC0, + 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, + 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, + 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, + 0x05, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, + 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, + 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, + 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, + 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, + 0x80, 0x0F, 0x05, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, + 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0x80, 0x03, 0xFF, + 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, + 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, + 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x02, 0x00, 0x84, 0xF0, + 0xFF, 0x07, 0x00, 0xFC, 0x02, 0xFF, 0x86, 0x07, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0xE0, 0x02, 0xFF, + 0x80, 0x3F, 0x02, 0x00, 0x83, 0xFC, 0xFF, 0x01, 0x00, 0x03, 0xFF, 0x86, 0x01, 0x00, 0xE0, 0xFF, + 0x0F, 0x00, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x83, 0xFF, 0x7F, 0x00, 0xC0, 0x02, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x86, 0xF8, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0x1F, 0x02, 0x00, 0x84, 0xC0, + 0xFF, 0x1F, 0x00, 0xF0, 0x02, 0xFF, 0x03, 0x00, 0x83, 0xFE, 0xFF, 0x00, 0x80, 0x02, 0xFF, 0x80, + 0x07, 0x02, 0x00, 0x86, 0xF0, 0xFF, 0x07, 0x00, 0xFC, 0xFF, 0x3F, 0x02, 0x00, 0x84, 0x80, 0xFF, + 0x3F, 0x00, 0xE0, 0x02, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x83, 0xFC, 0xFF, 0x01, 0x00, 0x02, 0xFF, + 0x80, 0x0F, 0x02, 0x00, 0x86, 0xE0, 0xFF, 0x0F, 0x00, 0xF8, 0xFF, 0x7F, 0x03, 0x00, 0x83, 0xFF, + 0x7F, 0x00, 0xC0, 0x02, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x86, 0xF8, 0xFF, 0x03, 0x00, 0xFE, 0xFF, + 0x1F, 0x02, 0x00, 0x84, 0xC0, 0xFF, 0x1F, 0x00, 0xF0, 0x7F, 0xFF, 0x0D, 0xFF, 0x80, 0x01, 0x04, + 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, + 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, + 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, + 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, + 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, + 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, + 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, + 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, + 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, + 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, + 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/4.qgf.h b/users/default/hlc_tft_display/graphics/numbers/4.qgf.h new file mode 100644 index 00000000..39e30006 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/4.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/4.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_4_length; +extern const uint8_t gfx_4[718]; diff --git a/users/default/hlc_tft_display/graphics/numbers/5.qgf.c b/users/default/hlc_tft_display/graphics/numbers/5.qgf.c new file mode 100644 index 00000000..93e3ff37 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/5.qgf.c @@ -0,0 +1,58 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/5.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_5_length = 613; + +// clang-format off +const uint8_t gfx_5[613] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x65, 0x02, 0x00, 0x00, 0x9A, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x35, 0x02, 0x00, + 0x7F, 0xFF, 0x0F, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, + 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, + 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, + 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, + 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, + 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, + 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, + 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, + 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, + 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, + 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x80, 0x80, + 0x07, 0xFF, 0x82, 0x07, 0x00, 0xFC, 0x06, 0xFF, 0x82, 0x3F, 0x00, 0xE0, 0x07, 0xFF, 0x81, 0x01, + 0x00, 0x07, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x06, 0xFF, 0x82, 0x7F, 0x00, 0xC0, 0x07, 0xFF, 0x82, + 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, + 0x00, 0xFC, 0x07, 0xFF, 0x81, 0x07, 0xE0, 0x08, 0xFF, 0x80, 0x07, 0x08, 0xFF, 0x81, 0x3F, 0xF8, + 0x08, 0xFF, 0x80, 0xC1, 0x08, 0xFF, 0x81, 0x0F, 0xFE, 0x07, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, + 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, + 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, + 0xFF, 0x80, 0x07, 0x06, 0x00, 0x82, 0xFC, 0xFF, 0x3F, 0x06, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, + 0x01, 0x06, 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, 0x80, + 0xC0, 0x02, 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, + 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x80, 0xFC, + 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, + 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, + 0x05, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, + 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, + 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, + 0x80, 0x07, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, + 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x02, 0xFF, + 0x81, 0x3F, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, + 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, 0x00, 0x80, 0x06, 0xFF, 0x80, + 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, + 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, + 0xFF, 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, + 0xFF, 0x80, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/5.qgf.h b/users/default/hlc_tft_display/graphics/numbers/5.qgf.h new file mode 100644 index 00000000..995fe2d9 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/5.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/5.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_5_length; +extern const uint8_t gfx_5[613]; diff --git a/users/default/hlc_tft_display/graphics/numbers/6.qgf.c b/users/default/hlc_tft_display/graphics/numbers/6.qgf.c new file mode 100644 index 00000000..6b610944 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/6.qgf.c @@ -0,0 +1,66 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/6.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_6_length = 749; + +// clang-format off +const uint8_t gfx_6[749] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xED, 0x02, 0x00, 0x00, 0x12, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xBD, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, + 0x03, 0xFF, 0x80, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, + 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, + 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, + 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, + 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, + 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x80, 0x80, 0x07, 0xFF, 0x82, 0x07, 0x00, 0xFC, 0x06, 0xFF, + 0x82, 0x3F, 0x00, 0xE0, 0x07, 0xFF, 0x81, 0x01, 0x00, 0x07, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x06, + 0xFF, 0x82, 0x7F, 0x00, 0xC0, 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, + 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, 0x00, 0xFC, 0x07, 0xFF, 0x81, 0x07, 0xE0, 0x08, + 0xFF, 0x80, 0x07, 0x08, 0xFF, 0x81, 0x3F, 0xF8, 0x08, 0xFF, 0x80, 0xC1, 0x08, 0xFF, 0x81, 0x0F, + 0xFE, 0x07, 0xFF, 0x83, 0x7F, 0xF0, 0xFF, 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, + 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, + 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x05, 0x00, + 0x04, 0xFF, 0x80, 0x07, 0x04, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xC0, + 0x04, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, + 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, + 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, + 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, + 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, + 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, + 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, + 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, + 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, + 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, + 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, + 0x08, 0xFF, 0x81, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, + 0x01, 0x00, 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, + 0xF8, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, + 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, + 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/6.qgf.h b/users/default/hlc_tft_display/graphics/numbers/6.qgf.h new file mode 100644 index 00000000..4e9ad2c8 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/6.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/6.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_6_length; +extern const uint8_t gfx_6[749]; diff --git a/users/default/hlc_tft_display/graphics/numbers/7.qgf.c b/users/default/hlc_tft_display/graphics/numbers/7.qgf.c new file mode 100644 index 00000000..97286c43 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/7.qgf.c @@ -0,0 +1,60 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/7.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_7_length = 650; + +// clang-format off +const uint8_t gfx_7[650] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x8A, 0x02, 0x00, 0x00, 0x75, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x5A, 0x02, 0x00, + 0x7F, 0xFF, 0x0F, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, + 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, + 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, + 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, + 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, + 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, + 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, + 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, + 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, + 0x01, 0x06, 0x00, 0x02, 0xFF, 0x80, 0x0F, 0x06, 0x00, 0x82, 0xF8, 0xFF, 0x7F, 0x06, 0x00, 0x80, + 0xC0, 0x02, 0xFF, 0x80, 0x03, 0x06, 0x00, 0x82, 0xFE, 0xFF, 0x1F, 0x06, 0x00, 0x80, 0xF0, 0x02, + 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, + 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, + 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, + 0x00, 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x80, + 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x02, + 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, 0x00, 0x80, 0xF0, 0x02, + 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x06, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, + 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, + 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x03, 0x05, + 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x02, 0xFF, 0x80, 0x07, 0x05, + 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x3F, 0x06, 0x00, 0x03, 0xFF, 0x80, 0x01, 0x05, 0x00, 0x80, + 0xF8, 0x02, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xC0, 0x02, 0xFF, 0x80, 0x7F, 0x06, 0x00, 0x82, + 0xFE, 0xFF, 0x1F, 0x06, 0x00, 0x80, 0xF0, 0x02, 0xFF, 0x06, 0x00, 0x80, 0x80, 0x02, 0xFF, 0x80, + 0x07, 0x06, 0x00, 0x82, 0xFC, 0xFF, 0x3F, 0x06, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x80, 0x01, 0x06, + 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, + 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, + 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, + 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, + 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, + 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, + 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, + 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, + 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, + 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, + 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, + 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, + 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, 0x04, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/7.qgf.h b/users/default/hlc_tft_display/graphics/numbers/7.qgf.h new file mode 100644 index 00000000..b62de3d6 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/7.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/7.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_7_length; +extern const uint8_t gfx_7[650]; diff --git a/users/default/hlc_tft_display/graphics/numbers/8.qgf.c b/users/default/hlc_tft_display/graphics/numbers/8.qgf.c new file mode 100644 index 00000000..3589eba7 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/8.qgf.c @@ -0,0 +1,69 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/8.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_8_length = 786; + +// clang-format off +const uint8_t gfx_8[786] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x12, 0x03, 0x00, 0x00, 0xED, 0xFC, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xE2, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, + 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, + 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, + 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, + 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, + 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x01, + 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, + 0x03, 0x00, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x80, 0x1F, 0x02, 0x00, + 0x80, 0xC0, 0x02, 0xFF, 0x81, 0x7F, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, 0x00, + 0xFC, 0x07, 0xFF, 0x81, 0x07, 0xE0, 0x07, 0xFF, 0x81, 0x3F, 0x00, 0x08, 0xFF, 0x81, 0x01, 0x00, + 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, 0x82, 0x03, 0x00, 0xC0, 0x06, 0xFF, + 0x80, 0x1F, 0x02, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, 0x07, + 0x00, 0xFC, 0x07, 0xFF, 0x81, 0x07, 0xE0, 0x07, 0xFF, 0x81, 0x3F, 0x00, 0x08, 0xFF, 0x81, 0x01, + 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x81, 0x7F, 0xF0, 0x02, 0xFF, 0x80, 0x1F, 0x02, + 0x00, 0x80, 0xC0, 0x06, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, 0x00, 0x80, + 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, + 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, + 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, + 0x07, 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, + 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, + 0x03, 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, + 0x00, 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, + 0xF8, 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, + 0xFE, 0x03, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, + 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, + 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, + 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, + 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, + 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, + 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, + 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, 0xE0, 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, + 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, + 0x03, 0x00, 0x80, 0xC0, 0x05, 0xFF, 0x80, 0x07, 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x3F, + 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, + 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/8.qgf.h b/users/default/hlc_tft_display/graphics/numbers/8.qgf.h new file mode 100644 index 00000000..248a586c --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/8.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/8.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_8_length; +extern const uint8_t gfx_8[786]; diff --git a/users/default/hlc_tft_display/graphics/numbers/9.qgf.c b/users/default/hlc_tft_display/graphics/numbers/9.qgf.c new file mode 100644 index 00000000..e5c86685 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/9.qgf.c @@ -0,0 +1,66 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/9.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_9_length = 746; + +// clang-format off +const uint8_t gfx_9[746] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0xEA, 0x02, 0x00, 0x00, 0x15, 0xFD, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0xBA, 0x02, 0x00, + 0x81, 0x00, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x7F, 0x03, + 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x05, 0xFF, 0x80, 0x1F, 0x03, 0x00, 0x80, + 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xFE, 0x06, 0xFF, 0x02, 0x00, 0x80, 0xF0, 0x06, 0xFF, 0x82, + 0x07, 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, + 0xE0, 0x06, 0xFF, 0x82, 0x0F, 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, + 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x80, 0xE0, + 0x02, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, + 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x80, 0xE0, 0x05, 0xFF, 0x80, 0x7F, 0x03, 0x00, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x04, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x3F, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x03, + 0x04, 0x00, 0x80, 0x80, 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, + 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, + 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, + 0x02, 0xFF, 0x80, 0x7F, 0x05, 0x00, 0x80, 0xF0, 0x03, 0xFF, 0x80, 0x03, 0x04, 0x00, 0x80, 0x80, + 0x03, 0xFF, 0x80, 0x1F, 0x05, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x80, 0xE0, + 0x04, 0xFF, 0x05, 0x00, 0x04, 0xFF, 0x80, 0x07, 0x04, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x3F, + 0x04, 0x00, 0x80, 0xC0, 0x04, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x01, + 0x03, 0x00, 0x80, 0xF0, 0x04, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, 0x80, 0x04, 0xFF, 0x80, 0x7F, + 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, 0xE0, 0x04, 0xFF, 0x80, 0x1F, + 0x04, 0x00, 0x82, 0xFF, 0x7F, 0xF0, 0x08, 0xFF, 0x80, 0x83, 0x08, 0xFF, 0x81, 0x1F, 0xFC, 0x08, + 0xFF, 0x80, 0xE0, 0x08, 0xFF, 0x80, 0x07, 0x08, 0xFF, 0x81, 0x3F, 0x00, 0x08, 0xFF, 0x81, 0x01, + 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, + 0xF0, 0x07, 0xFF, 0x82, 0x1F, 0x00, 0xF0, 0x07, 0xFF, 0x81, 0x00, 0x80, 0x07, 0xFF, 0x82, 0x07, + 0x00, 0xFC, 0x06, 0xFF, 0x82, 0x3F, 0x00, 0xE0, 0x07, 0xFF, 0x81, 0x01, 0x00, 0x07, 0xFF, 0x80, + 0x0F, 0x07, 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, + 0xFF, 0x1F, 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, + 0x80, 0xFF, 0x3F, 0x07, 0x00, 0x82, 0xFC, 0xFF, 0x01, 0x06, 0x00, 0x82, 0xE0, 0xFF, 0x0F, 0x07, + 0x00, 0x81, 0xFF, 0x7F, 0x07, 0x00, 0x82, 0xF8, 0xFF, 0x03, 0x06, 0x00, 0x82, 0xC0, 0xFF, 0x1F, + 0x07, 0x00, 0x81, 0xFE, 0xFF, 0x07, 0x00, 0x82, 0xF0, 0xFF, 0x07, 0x06, 0x00, 0x82, 0x80, 0xFF, + 0x3F, 0x07, 0x00, 0x80, 0xFC, 0x03, 0xFF, 0x05, 0x00, 0x80, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0x05, + 0x00, 0x03, 0xFF, 0x80, 0x3F, 0x05, 0x00, 0x80, 0xF8, 0x03, 0xFF, 0x80, 0x01, 0x04, 0x00, 0x80, + 0xC0, 0x03, 0xFF, 0x80, 0x0F, 0x05, 0x00, 0x80, 0xFE, 0x03, 0xFF, 0x80, 0x0F, 0x03, 0x00, 0x80, + 0x80, 0x04, 0xFF, 0x80, 0x7F, 0x04, 0x00, 0x80, 0xFC, 0x04, 0xFF, 0x80, 0x03, 0x03, 0x00, 0x80, + 0xE0, 0x04, 0xFF, 0x80, 0x1F, 0x04, 0x00, 0x05, 0xFF, 0x04, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, + 0x00, 0x80, 0xFE, 0x05, 0xFF, 0x80, 0x07, 0x02, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x3F, 0x02, + 0x00, 0x80, 0x80, 0x06, 0xFF, 0x80, 0x01, 0x02, 0x00, 0x80, 0xFC, 0x05, 0xFF, 0x80, 0x0F, 0x02, + 0x00, 0x80, 0xE0, 0x02, 0xFF, 0x81, 0x3F, 0xF8, 0x07, 0xFF, 0x81, 0x0F, 0xC0, 0x07, 0xFF, 0x82, + 0x7F, 0x00, 0xFE, 0x07, 0xFF, 0x81, 0x03, 0xF0, 0x07, 0xFF, 0x81, 0x1F, 0x80, 0x08, 0xFF, 0x81, + 0x00, 0x80, 0x06, 0xFF, 0x80, 0x3F, 0x02, 0x00, 0x80, 0xFC, 0x06, 0xFF, 0x82, 0x01, 0x00, 0xE0, + 0x06, 0xFF, 0x80, 0x0F, 0x02, 0x00, 0x06, 0xFF, 0x80, 0x7F, 0x02, 0x00, 0x80, 0xF8, 0x06, 0xFF, + 0x80, 0x03, 0x02, 0x00, 0x80, 0xF8, 0x05, 0xFF, 0x03, 0x00, 0x80, 0xC0, 0x05, 0xFF, 0x80, 0x07, + 0x03, 0x00, 0x80, 0xFE, 0x04, 0xFF, 0x80, 0x3F, 0x03, 0x00, 0x80, 0xF0, 0x05, 0xFF, 0x80, 0x01, + 0x02, 0x00, 0x80, 0x80, 0x05, 0xFF, 0x80, 0x0F, 0x02, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/9.qgf.h b/users/default/hlc_tft_display/graphics/numbers/9.qgf.h new file mode 100644 index 00000000..30c9fe0b --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/9.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/9.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_9_length; +extern const uint8_t gfx_9[746]; diff --git a/users/default/hlc_tft_display/graphics/numbers/undef.qgf.c b/users/default/hlc_tft_display/graphics/numbers/undef.qgf.c new file mode 100644 index 00000000..96508785 --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/undef.qgf.c @@ -0,0 +1,29 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/undef.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +// Image's metadata +// ---------------- +// Width: 75 +// Height: 105 +// Single frame + +#include + +const uint32_t gfx_undef_length = 149; + +// clang-format off +const uint8_t gfx_undef[149] = { + 0x00, 0xFF, 0x12, 0x00, 0x00, 0x51, 0x47, 0x46, 0x01, 0x95, 0x00, 0x00, 0x00, 0x6A, 0xFF, 0xFF, + 0xFF, 0x4B, 0x00, 0x69, 0x00, 0x01, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x02, 0xFD, 0x06, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xE8, 0x03, 0x05, 0xFA, 0x65, 0x00, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x29, 0x00, 0x80, 0xC0, 0x07, 0xFF, 0x82, 0x07, 0x00, 0xFE, + 0x06, 0xFF, 0x82, 0x3F, 0x00, 0xF0, 0x07, 0xFF, 0x81, 0x01, 0x80, 0x07, 0xFF, 0x82, 0x0F, 0x00, + 0xFC, 0x06, 0xFF, 0x82, 0x7F, 0x00, 0xE0, 0x07, 0xFF, 0x81, 0x03, 0x00, 0x07, 0xFF, 0x82, 0x1F, + 0x00, 0xF8, 0x07, 0xFF, 0x81, 0x00, 0xC0, 0x07, 0xFF, 0x82, 0x07, 0x00, 0xFE, 0x06, 0xFF, 0x82, + 0x3F, 0x00, 0xF0, 0x07, 0xFF, 0x81, 0x01, 0x80, 0x07, 0xFF, 0x82, 0x0F, 0x00, 0xFC, 0x06, 0xFF, + 0x82, 0x7F, 0x00, 0xE0, 0x07, 0xFF, 0x81, 0x03, 0x00, 0x07, 0xFF, 0x80, 0x1F, 0x7F, 0x00, 0x7F, + 0x00, 0x7F, 0x00, 0x2A, 0x00, +}; +// clang-format on diff --git a/users/default/hlc_tft_display/graphics/numbers/undef.qgf.h b/users/default/hlc_tft_display/graphics/numbers/undef.qgf.h new file mode 100644 index 00000000..e1cadf5c --- /dev/null +++ b/users/default/hlc_tft_display/graphics/numbers/undef.qgf.h @@ -0,0 +1,11 @@ +// Copyright 2024 QMK -- generated source code only, image retains original copyright +// SPDX-License-Identifier: GPL-2.0-or-later + +// This file was auto-generated by `qmk painter-convert-graphics --input /home/harvey/Github/skb_qmk_userspace/temp_font_stuff/undef.png --output /home/harvey/Github/skb_qmk_userspace/temp_font_stuff --format mono2 --no-rle False --no-deltas False` + +#pragma once + +#include + +extern const uint32_t gfx_undef_length; +extern const uint8_t gfx_undef[149]; diff --git a/users/default/hlc_tft_display/hlc_tft_display.c b/users/default/hlc_tft_display/hlc_tft_display.c new file mode 100644 index 00000000..9931122f --- /dev/null +++ b/users/default/hlc_tft_display/hlc_tft_display.c @@ -0,0 +1,344 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +#include "halcyon.h" +#include "hlc_tft_display.h" +#include "config.h" + +#include "qp.h" +#include "qp_comms.h" +#include "qp_surface.h" +#include "qp_st77xx_opcodes.h" +#include "split_util.h" +#include + +// Fonts mono2 +#include "graphics/fonts/Retron2000-27.qff.h" +#include "graphics/fonts/Retron2000-underline-27.qff.h" + +// Numbers mono2 +#include "graphics/numbers/0.qgf.h" +#include "graphics/numbers/1.qgf.h" +#include "graphics/numbers/2.qgf.h" +#include "graphics/numbers/3.qgf.h" +#include "graphics/numbers/4.qgf.h" +#include "graphics/numbers/5.qgf.h" +#include "graphics/numbers/6.qgf.h" +#include "graphics/numbers/7.qgf.h" +#include "graphics/numbers/8.qgf.h" +#include "graphics/numbers/9.qgf.h" +#include "graphics/numbers/undef.qgf.h" + +static const char *caps = "Caps"; +static const char *num = "Num"; +static const char *scroll = "Scroll"; + +static painter_font_handle_t Retron27; +static painter_font_handle_t Retron27_underline; +static painter_image_handle_t layer_number; +backlight_config_t backlight_config; + +static uint16_t lcd_surface_fb[135*240]; + +bool backlight_off = false; +int color_value = 0; + +led_t last_led_usb_state = {0}; +layer_state_t last_layer_state = {0}; + +#define GRID_WIDTH 27 +#define GRID_HEIGHT 48 +#define CELL_SIZE 4 // Cell size excluding outline +#define OUTLINE_SIZE 1 + +// Define the probability factor for initial alive cells +#define INITIAL_ALIVE_PROBABILITY 0.2 // 20% chance of being alive + +bool grid[GRID_HEIGHT][GRID_WIDTH]; // Current state +bool new_grid[GRID_HEIGHT][GRID_WIDTH]; // Next state +bool changed_grid[GRID_HEIGHT][GRID_WIDTH]; // Tracks changed cells + +void init_grid() { + // Initialize grid with alive cells + for (int y = 0; y < GRID_HEIGHT; y++) { + for (int x = 0; x < GRID_WIDTH; x++) { + grid[y][x] = (rand() < INITIAL_ALIVE_PROBABILITY * RAND_MAX); // Use probability factor + changed_grid[y][x] = true; // Mark all as changed initially + } + } +} + +void draw_grid() { + uint8_t hue = 0; // Hue for alive cells + uint8_t sat = 0; // Saturation for alive cells + uint8_t val_dead = 0; // Brightness for dead cells + + for (int y = 0; y < GRID_HEIGHT; y++) { + for (int x = 0; x < GRID_WIDTH; x++) { + if (changed_grid[y][x]) { // Only update changed cells + uint16_t left = x * (CELL_SIZE + OUTLINE_SIZE); + uint16_t top = y * (CELL_SIZE + OUTLINE_SIZE); + uint16_t right = left + CELL_SIZE + OUTLINE_SIZE; + uint16_t bottom = top + CELL_SIZE + OUTLINE_SIZE; + + // Draw the outline + qp_rect(lcd_surface, left, top, right, bottom, hue, sat, val_dead, true); + + // Draw the filled cell inside the outline if it's alive + if (grid[y][x]) { + switch (color_value) { + case 0: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_0, true); + break; + case 1: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_1, true); + break; + case 2: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_2, true); + break; + case 3: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_3, true); + break; + case 4: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_4, true); + break; + case 5: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_5, true); + break; + case 6: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_6, true); + break; + case 7: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_7, true); + break; + default: + qp_rect(lcd_surface, left + OUTLINE_SIZE, top + OUTLINE_SIZE, right - OUTLINE_SIZE, bottom - OUTLINE_SIZE, HSV_LAYER_UNDEF, true); + } + } + } + } + } +} + +void update_grid() { + for (int y = 0; y < GRID_HEIGHT; y++) { + for (int x = 0; x < GRID_WIDTH; x++) { + int alive_neighbors = 0; + + // Count alive neighbors + for (int dy = -1; dy <= 1; dy++) { + for (int dx = -1; dx <= 1; dx++) { + if (dy == 0 && dx == 0) continue; // Skip the current cell + int ny = y + dy; + int nx = x + dx; + if (ny >= 0 && ny < GRID_HEIGHT && nx >= 0 && nx < GRID_WIDTH) { + alive_neighbors += grid[ny][nx]; + } + } + } + + // Apply the rules of the Game of Life + if (grid[y][x]) { + // Any live cell with two or three live neighbours survives. + new_grid[y][x] = (alive_neighbors == 2 || alive_neighbors == 3); + } else { + // Any dead cell with exactly three live neighbours becomes a live cell. + new_grid[y][x] = (alive_neighbors == 3); + } + + // Track changed cells + changed_grid[y][x] = (grid[y][x] != new_grid[y][x]); + } + } + + // Copy new grid state to current grid + for (int y = 0; y < GRID_HEIGHT; y++) { + for (int x = 0; x < GRID_WIDTH; x++) { + grid[y][x] = new_grid[y][x]; + } + } +} + +// Function to add a cluster of cells at a random position +void add_cell_cluster() { + int cluster_size = 3; // Size of the cluster (3x3) + int x = rand() % (GRID_WIDTH - cluster_size); + int y = rand() % (GRID_HEIGHT - cluster_size); + + for (int dy = 0; dy < cluster_size; dy++) { + for (int dx = 0; dx < cluster_size; dx++) { + bool is_alive = rand() % 2; // Randomly choose between 0 and 1 + grid[y + dy][x + dx] = is_alive; // Set the cell to be alive + changed_grid[y + dy][x + dx] = true; // Mark the cell as changed + } + } +} + +void update_display(void) { + static bool first_run_led = false; + static bool first_run_layer = false; + + if( first_run_layer == false) { + // Load fonts + Retron27 = qp_load_font_mem(font_Retron2000_27); + Retron27_underline = qp_load_font_mem(font_Retron2000_underline_27); + } + + if(last_led_usb_state.raw != host_keyboard_led_state().raw || first_run_led == false) { + led_t led_usb_state = host_keyboard_led_state(); + + led_usb_state.caps_lock ? qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height * 3 - 15, Retron27_underline, caps, HSV_CAPS_ON, HSV_BLACK) : qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height * 3 - 15, Retron27, caps, HSV_CAPS_OFF, HSV_BLACK); + led_usb_state.num_lock ? qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height * 2 - 10, Retron27_underline, num, HSV_NUM_ON, HSV_BLACK) : qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height * 2 - 10, Retron27, num, HSV_NUM_OFF, HSV_BLACK); + led_usb_state.scroll_lock ? qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height - 5, Retron27_underline, scroll, HSV_SCROLL_ON, HSV_BLACK) : qp_drawtext_recolor(lcd_surface, 5, LCD_HEIGHT - Retron27->line_height - 5, Retron27, scroll, HSV_SCROLL_OFF, HSV_BLACK); + + last_led_usb_state = led_usb_state; + first_run_led = true; + } + + if(last_layer_state != layer_state || first_run_layer == false) { + switch (get_highest_layer(layer_state|default_layer_state)) { + case 0: + layer_number = qp_load_image_mem(gfx_0); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_0, HSV_BLACK); + break; + case 1: + layer_number = qp_load_image_mem(gfx_1); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_1, HSV_BLACK); + break; + case 2: + layer_number = qp_load_image_mem(gfx_2); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_2, HSV_BLACK); + break; + case 3: + layer_number = qp_load_image_mem(gfx_3); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_3, HSV_BLACK); + break; + case 4: + layer_number = qp_load_image_mem(gfx_4); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_4, HSV_BLACK); + break; + case 5: + layer_number = qp_load_image_mem(gfx_5); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_5, HSV_BLACK); + break; + case 6: + layer_number = qp_load_image_mem(gfx_6); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_6, HSV_BLACK); + break; + case 7: + layer_number = qp_load_image_mem(gfx_7); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_7, HSV_BLACK); + break; + default: + layer_number = qp_load_image_mem(gfx_undef); + qp_drawimage_recolor(lcd_surface, 5, 5, layer_number, HSV_LAYER_UNDEF, HSV_BLACK); + } + qp_close_image(layer_number); + last_layer_state = layer_state; + first_run_layer = true; + } +} + +// Quantum function +void suspend_power_down_kb(void) { + // backlight_suspend(); Disabled as it gives some weird behavior when rebooting the host + qp_power(lcd, false); + suspend_power_down_user(); +} + +// Quantum function +void suspend_wakeup_init_kb(void) { + qp_power(lcd, true); + // backlight_wakeup(); Disabled as it gives some weird behavior when rebooting the host + suspend_wakeup_init_user(); +} + +// Timeout handling +void backlight_wakeup(void) { + backlight_off = false; + backlight_enable(); +} + +// Timeout handling +void backlight_suspend(void) { + backlight_off = true; + backlight_disable(); +} + +// Called from halcyon.c +bool module_post_init_kb(void) { + setPinOutput(LCD_RST_PIN); + writePinHigh(LCD_RST_PIN); + + // Initialise the LCD + lcd = qp_st7789_make_spi_device(LCD_WIDTH, LCD_HEIGHT, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, LCD_SPI_DIVISOR, LCD_SPI_MODE); + qp_init(lcd, LCD_ROTATION); + qp_set_viewport_offsets(lcd, LCD_OFFSET_X, LCD_OFFSET_Y); + + // Initialise surface + lcd_surface = qp_make_rgb565_surface(LCD_WIDTH, LCD_HEIGHT, lcd_surface_fb); + qp_init(lcd_surface, LCD_ROTATION); + + // Turn on the LCD and clear the display + qp_power(lcd, true); + qp_rect(lcd, 0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, HSV_BLACK, true); + qp_flush(lcd); + + // Turn on backlight + backlight_enable(); + + if(!module_post_init_user()) { return false; } + + return true; +} + +// Called from halcyon.c +bool display_module_housekeeping_task_kb(bool second_display) { + // Backlight feature + if (backlight_off && last_input_activity_elapsed() <= QUANTUM_PAINTER_DISPLAY_TIMEOUT) { + backlight_wakeup(); + } + if (!backlight_off && last_input_activity_elapsed() > QUANTUM_PAINTER_DISPLAY_TIMEOUT) { + backlight_suspend(); + } + + if(!display_module_housekeeping_task_user(second_display)) { return false; } + + if(second_display) { + static uint32_t last_draw = 0; + static bool second_display_set = false; + static uint32_t previous_matrix_activity_time = 0; + + if(!second_display_set) { + srand(time(NULL)); + init_grid(); + color_value = rand() % 8; + second_display_set = true; + } + + if (timer_elapsed32(last_draw) >= 100) { // Throttle to 10 fps + draw_grid(); + update_grid(); + + if (previous_matrix_activity_time != last_matrix_activity_time()) { + color_value = rand() % 8; + add_cell_cluster(); + previous_matrix_activity_time = last_matrix_activity_time(); + } + + last_draw = timer_read32(); + } + } + + // Update display information (layers, numlock, etc.) + if(!second_display) { + update_display(); + } + + // Move surface to lcd + qp_surface_draw(lcd_surface, lcd, 0, 0, 0); + + return true; +} \ No newline at end of file diff --git a/users/default/hlc_tft_display/hlc_tft_display.h b/users/default/hlc_tft_display/hlc_tft_display.h new file mode 100644 index 00000000..93a2c79f --- /dev/null +++ b/users/default/hlc_tft_display/hlc_tft_display.h @@ -0,0 +1,38 @@ +// Copyright 2024 splitkb.com (support@splitkb.com) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "qp.h" + +// All values (including hue) are scaled to 0-255 +#define HSV_SPLITKB 145, 235, 155 +#define HSV_CAPS_OFF 17, 104, 77 +#define HSV_CAPS_ON 17, 191, 245 +#define HSV_SCROLL_OFF 202, 104, 77 +#define HSV_SCROLL_ON 202, 191, 245 +#define HSV_NUM_OFF 142, 104, 77 +#define HSV_NUM_ON 142, 191, 245 + +#define HSV_LAYER_0 0, 0, 160 +#define HSV_LAYER_3 0, 82, 255 +#define HSV_LAYER_1 23, 89, 255 +#define HSV_LAYER_2 43, 71, 255 +#define HSV_LAYER_4 77, 64, 255 +#define HSV_LAYER_6 131, 99, 255 +#define HSV_LAYER_7 154, 94, 255 +#define HSV_LAYER_5 176, 77, 255 +// #define HSV_LAYER_8 213, 56, 255 +#define HSV_LAYER_UNDEF 0, 255, 255 + +painter_device_t lcd; +painter_device_t lcd_surface; + +void draw_grid(void); +void update_grid(void); +void init_grid(void); +void add_cell_cluster(void); +uint8_t get_random_color_index(void); +void update_display(void); +void backlight_wakeup(void); +void backlight_suspend(void); \ No newline at end of file diff --git a/users/default/hlc_tft_display/rules.mk b/users/default/hlc_tft_display/rules.mk new file mode 100644 index 00000000..b499d77f --- /dev/null +++ b/users/default/hlc_tft_display/rules.mk @@ -0,0 +1,15 @@ +CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) + +QUANTUM_PAINTER_ENABLE = yes +QUANTUM_PAINTER_DRIVERS += st7789_spi surface +BACKLIGHT_ENABLE = yes +BACKLIGHT_DRIVER = pwm + +SRC += $(CURRENT_DIR)/hlc_tft_display.c + +# Fonts +SRC += $(CURRENT_DIR)/graphics/fonts/Retron2000-27.qff.c $(CURRENT_DIR)/graphics/fonts/Retron2000-underline-27.qff.c +# Numbers in image format +SRC += $(CURRENT_DIR)/graphics/numbers/0.qgf.c $(CURRENT_DIR)/graphics/numbers/1.qgf.c $(CURRENT_DIR)/graphics/numbers/2.qgf.c $(CURRENT_DIR)/graphics/numbers/3.qgf.c $(CURRENT_DIR)/graphics/numbers/4.qgf.c $(CURRENT_DIR)/graphics/numbers/5.qgf.c $(CURRENT_DIR)/graphics/numbers/6.qgf.c $(CURRENT_DIR)/graphics/numbers/7.qgf.c $(CURRENT_DIR)/graphics/numbers/8.qgf.c $(CURRENT_DIR)/graphics/numbers/9.qgf.c $(CURRENT_DIR)/graphics/numbers/undef.qgf.c + +CONFIG_H += $(CURRENT_DIR)/config.h \ No newline at end of file diff --git a/users/default/rules.mk b/users/default/rules.mk new file mode 100644 index 00000000..7ca0f087 --- /dev/null +++ b/users/default/rules.mk @@ -0,0 +1,37 @@ +CURRENT_DIR := $(dir $(realpath $(lastword $(MAKEFILE_LIST)))) + +SRC += halcyon.c + +ifndef HLC_CIRQUE_TRACKPAD #add any other pointing devices here + # Needed otherwise pointing devices will not work + POINTING_DEVICE_ENABLE = yes + # cirque defined here as otherwise sensitivity on slave is way too high + # may need to be changed when we start supporting other pointing devices + POINTING_DEVICE_DRIVER = cirque_pinnacle_spi +endif + +ifndef HLC_TFT_DISPLAY #add any other displays here + # Needed otherwise displays will not work + QUANTUM_PAINTER_ENABLE = yes + QUANTUM_PAINTER_DRIVERS += st7789_spi + BACKLIGHT_ENABLE = yes + BACKLIGHT_DRIVER = pwm +endif + +ifdef HLC_ENCODER + include $(CURRENT_DIR)/hlc_encoder/rules.mk +endif + +ifdef HLC_TFT_DISPLAY + include $(CURRENT_DIR)/hlc_tft_display/rules.mk +endif + +ifdef HLC_CIRQUE_TRACKPAD + include $(CURRENT_DIR)/hlc_cirque_trackpad/rules.mk +endif + +HLC_OPTIONS := $(HLC_NONE) $(HLC_CIRQUE_TRACKPAD) $(HLC_ENCODER) $(HLC_TFT_DISPLAY) + +ifeq ($(filter 1, $(HLC_OPTIONS)), ) +$(error Wrong or no module specified. Please specify one of the following: HLC_NONE, HLC_CIRQUE_TRACKPAD, HLC_ENCODER or HLC_TFT_DISPLAY.) +endif \ No newline at end of file