[escher] Improve chevron view

Change-Id: I54239fc4564cc546e29b8002ecb44c178f05f378
This commit is contained in:
Émilie Feral
2017-02-27 11:20:36 +01:00
parent 255ce66696
commit 81ea03cc69
5 changed files with 19 additions and 54 deletions

View File

@@ -36,7 +36,6 @@ void Cell::reloadCell() {
HighlightCell::reloadCell();
KDColor backgroundColor = isHighlighted()? Palette::Select : KDColorWhite;
m_labelView.setBackgroundColor(backgroundColor);
m_chevronView.setHighlighted(isHighlighted());
if (isHighlighted()) {
m_iconView.setImage(m_focusedIcon);
} else {

View File

@@ -1,18 +1,18 @@
#ifndef ESCHER_CHEVRON_VIEW_H
#define ESCHER_CHEVRON_VIEW_H
#include <escher/highlight_cell.h>
#include <escher/view.h>
class ChevronView : public HighlightCell {
class ChevronView : public View {
public:
ChevronView();
void drawRect(KDContext * ctx, KDRect rect) const override;
KDSize minimalSizeForOptimalDisplay() override;
/* k_chevronHeight and k_chevronWidth are the dimensions of the chevron. */
constexpr static KDCoordinate k_chevronHeight = 16;
constexpr static KDCoordinate k_chevronHeight = 10;
constexpr static KDCoordinate k_chevronWidth = 8;
private:
constexpr static KDCoordinate k_chevronRightMargin = 20;
constexpr static KDCoordinate k_chevronRightMargin = 10;
};
#endif

View File

@@ -8,7 +8,6 @@ class PointerTableCellWithChevron : public PointerTableCell {
public:
PointerTableCellWithChevron(char * label = nullptr, KDText::FontSize size = KDText::FontSize::Small);
View * accessoryView() const override;
void setHighlighted(bool highlight) override;
private:
ChevronView m_accessoryView;
};

View File

@@ -1,46 +1,21 @@
#include <escher/chevron_view.h>
#include <escher/palette.h>
const KDColor chevronPixel[] = {
KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
KDColorBlack, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite, KDColorWhite,
};
const KDColor highlightedChevronPixel[] = {
KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
KDColorBlack, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select, Palette::Select,
const uint8_t chevronMask[ChevronView::k_chevronHeight][ChevronView::k_chevronWidth] = {
{0x0C, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0x00, 0x00, 0x00, 0x0C, 0xE1, 0xFF, 0xFF, 0xFF},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x45},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x45},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF},
{0x00, 0x00, 0x00, 0x0C, 0xE1, 0xFF, 0xFF, 0xFF},
{0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
{0x0C, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
};
ChevronView::ChevronView() :
HighlightCell()
View()
{
}
@@ -53,14 +28,10 @@ void ChevronView::drawRect(KDContext * ctx, KDRect rect) const {
KDCoordinate width = bounds().width();
KDCoordinate heightCenter = bounds().height()/2;
KDCoordinate chevronHalfHeight = k_chevronHeight/2;
KDRect frame(width - k_chevronRightMargin, heightCenter -chevronHalfHeight, k_chevronWidth, k_chevronHeight);
if (m_highlighted) {
ctx->fillRectWithPixels(frame, highlightedChevronPixel, (KDColor *)s_workingBuffer);
} else {
ctx->fillRectWithPixels(frame, chevronPixel, (KDColor *)s_workingBuffer);
}
KDRect frame(width - k_chevronRightMargin - k_chevronWidth, heightCenter -chevronHalfHeight, k_chevronWidth, k_chevronHeight);
ctx->blendRectWithMask(frame, Palette::YellowDark, (const uint8_t *)chevronMask, s_workingBuffer);
}
KDSize ChevronView::minimalSizeForOptimalDisplay() {
return KDSize(k_chevronRightMargin, k_chevronHeight);
return KDSize(k_chevronRightMargin+k_chevronWidth, k_chevronHeight);
}

View File

@@ -10,7 +10,3 @@ View * PointerTableCellWithChevron::accessoryView() const {
return (View *)&m_accessoryView;
}
void PointerTableCellWithChevron::setHighlighted(bool highlight) {
PointerTableCell::setHighlighted(highlight);
m_accessoryView.setHighlighted(isHighlighted());
}