mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
42 lines
1.9 KiB
C++
42 lines
1.9 KiB
C++
#include <escher/toggleable_dot_view.h>
|
|
#include <escher/palette.h>
|
|
|
|
const uint8_t MediumDotMask[ToggleableDotView::k_dotSize][ToggleableDotView::k_dotSize] = {
|
|
{0xFF, 0xDB, 0x53, 0x0F, 0x0F, 0x53, 0xDB, 0xFF},
|
|
{0xD8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xD8},
|
|
{0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53},
|
|
{0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C},
|
|
{0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C},
|
|
{0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53},
|
|
{0xD7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, 0xD7},
|
|
{0xFF, 0xD8, 0x53, 0x0C, 0x0C, 0x53, 0xD8, 0xFF},
|
|
};
|
|
|
|
const uint8_t MediumShallowDotMask[ToggleableDotView::k_dotSize][ToggleableDotView::k_dotSize] = {
|
|
{0xFF, 0xDB, 0x53, 0x0F, 0x0F, 0x53, 0xDB, 0xFF},
|
|
{0xD8, 0x17, 0x90, 0xEC, 0xEC, 0x90, 0x17, 0xD8},
|
|
{0x53, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x53},
|
|
{0x0F, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0x0C},
|
|
{0x0F, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0x0C},
|
|
{0x53, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x53},
|
|
{0xD7, 0x17, 0x90, 0xEF, 0xEF, 0x90, 0x17, 0xD7},
|
|
{0xFF, 0xD8, 0x53, 0x0C, 0x0C, 0x53, 0xD8, 0xFF},
|
|
};
|
|
|
|
void ToggleableDotView::drawRect(KDContext * ctx, KDRect rect) const {
|
|
/* Draw the view aligned on the right of the view and vertically centered
|
|
* The heightCenter is the coordinate of the vertical middle of the view. That
|
|
* way, (heightCenter-halfHeight) indicates the top of the StateView. */
|
|
KDCoordinate width = bounds().width();
|
|
KDCoordinate heightCenter = bounds().height() / 2;
|
|
KDCoordinate halfHeight = k_dotSize / 2;
|
|
KDColor workingBuffer[k_dotSize * k_dotSize];
|
|
|
|
KDRect frame(width - k_dotSize, heightCenter - halfHeight, k_dotSize, k_dotSize);
|
|
ctx->blendRectWithMask(
|
|
frame,
|
|
m_state ? Palette::Control : Palette::GrayDark,
|
|
m_state ? reinterpret_cast<const uint8_t *>(MediumDotMask) : reinterpret_cast<const uint8_t *>(MediumShallowDotMask),
|
|
workingBuffer);
|
|
}
|