Complete this task as part of your GSoC application if you are applying for the AXIOM Remote related task.
This challenge is mandatory if you apply for T1126
---
Please follow the tasks closely and make sure to adhere to the C++ coding style (see links section for reference).
**Goal**
As addition to the 1 bit images/icon drawing which is basically limited to black/white or monochrome icons (https://github.com/apertus-open-source-cinema/AXIOM-Remote/blob/dev/Firmware/UI/Painter/Painter.cpp#L314) this challenge adds very soft antialiasing to images by using 2 bits and therefore 4 colors with a predefined palette (colors: transparent, light grey, dark grey, black).
This basically means we want to implement simplified anti-aliasing:
{F177091}
**Step 1: Preparations**
- Check out the source code of AXIOM Remote, switch to **dev** branch for recent version
- **Important**: Don't forget to initialize git sub-modules in the repo, otherwise ImGui errors will occur
- Look through general source code and especially **Firmware** project and learn the structure
- Build the visualizer (**AXIOM_Remote_Firmware_Visualizer**) and play a bit with a firmware to understand it more
- Ask questions either here or on our IRC channel //(please use a dedicated client instead of web interface, to prevent regular disconnects)
Visualizer output:
{F117271}
**Step 2: Add Draw2BitIcon() in Painter**
Description: Recreate apertus° logo from the starting page of the firmware with 2 images and minimal data size, afterwards implement DrawIcon()
- Dissect the given apertus° logo (see //Media//, size 320 x 240 like the AXIOM Remote screen, background transparent) file into 2, one should contain //apertus// and the other //°//, try to keep them as small as possible
- Convert the images to 2 bit depth C image arrays, you can use online converters (see //Useful Links//)
- Add the data to the firmware in the proper folder
- Add draw method for icons to the painter
- Recreate the logo on the starting page with the new method, place //°// properly
**Step 3: Bonus**
- Add unit tests for Draw2BitIcon() method to verify that predefined input also deliver correct output, see examples in FirmwareTest folder, it already contains a few painter tests
- Add parameter to the Draw2BitIcon() method to define the color palette and transparency
- Adjust the logo on the starting page to correspond to the apertus° colors, see https://www.apertus.org/logo for corresponding colour for "Letter Grey Dark" and "Accent Orange", hint: don't forget to convert them to RGB565 value
---
**Useful Links:**
- Image converter: https://littlevgl.com/image-to-c-array
- C++ coding guidelines (isocpp): https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
To get in touch with any mentor check the [[ https://www.apertus.org/GSoC-Mentor-Contact-List | Mentor Contact List]].