Aurore
A Switch-like interface for your app, on every screen
Loading...
Searching...
No Matches
cadran_kit.hpp
Go to the documentation of this file.
1// cadran::kit — the small pieces every Cadran screen builds with: a label, an
2// icon, a card, a pill, a chip, an empty state; a line's value without its
3// "›", a dot for a value's colour, a date in words.
4// Copyright (C) 2026 JigSawFr. GPLv3-or-later (see LICENSE.GPL).
5#pragma once
6
7#include <string>
8#include <aurore.hpp>
9
11
12namespace cadran::kit
13{
19constexpr float RADIUS_ROW = 14;
20constexpr float RADIUS_ICON = 12;
21constexpr float RADIUS_CARD = 20;
22constexpr float RADIUS_TOP = 22;
23constexpr float RADIUS_MODAL = 24;
24
28constexpr float TEXT_META = 15;
29constexpr float TEXT_KICKER = 16;
30constexpr float TEXT_NOTE = 16.5f;
31constexpr float TEXT_BODY = 17;
32constexpr float TEXT_LEAD = 19;
33constexpr float TEXT_TITLE = 23;
34
38NVGcolor color(const char* key);
39
42aurore::Label* label(const std::string& text, float size, const char* color_key = "cadran/text");
43
46aurore::Label* display(const std::string& text, float size, const char* color_key = "cadran/text");
47
49CadranIcon* icon(const char* name, float size, const char* color_key = "cadran/text2");
50
54aurore::Box* card(bool focusable, bool grow);
55
62void set_kicker(aurore::Label* label, const std::string& text = "");
64aurore::Box* kicker(const char* icon_name, const std::string& title);
65
70class Mark : public aurore::View
71{
72 public:
73 explicit Mark(const char* color_key);
74 void set(const char* color_key);
75 void draw(NVGcontext* vg, float x, float y, float width, float height, aurore::Style style,
76 aurore::FrameContext* ctx) override;
77
78 private:
79 enum class Shape
80 {
81 DOT,
82 CHECK,
83 WARN,
84 } shape
85 = Shape::DOT;
86 std::string key;
87};
88
91aurore::Box* pill(const std::string& text, const char* dot_key);
92
95aurore::Box* key(const char* letter, float size = 24);
96
100aurore::Box* qr(const std::string& payload, float side, const std::string& title, const std::string& caption,
101 float width = 0);
102
105class Bar : public aurore::View
106{
107 public:
109 void set(float fraction);
110 void draw(NVGcontext* vg, float x, float y, float width, float height, aurore::Style style,
111 aurore::FrameContext* ctx) override;
112
113 private:
114 float drawn() const;
115 float fraction = 0;
116 float from = 0;
117 aurore::Time since = 0;
118};
119
123class Chip : public aurore::Box
124{
125 public:
127 void frame(aurore::FrameContext* ctx) override;
128
129 protected:
132};
133aurore::Box* chip(const std::string& text, float height = 48);
134
138struct Empty
139{
140 aurore::Box* box = nullptr;
142 aurore::Label* text = nullptr;
143};
144Empty empty(const char* icon_name);
148aurore::Box* empty_around(aurore::Label* label, const char* icon_name);
149
153
160
165
171void draw_more_below(NVGcontext* vg, aurore::ScrollingFrame* frame, float x, float y, float width, float height,
172 const char* color_key, float corner = 0.0f);
173
175std::string without_chevron(const std::string& value);
176
179const char* dot_of(NVGcolor value_color);
180
183std::string long_date();
184std::string long_date(const std::string& ymd);
185} // namespace cadran::kit
Definition cadran_icon.hpp:27
Generic FlexBox layout.
Definition box.hpp:74
Definition button.hpp:146
Definition frame_context.hpp:30
Definition label.hpp:65
Definition scrolling_frame.hpp:45
Simple wrapper around StyleValues for the array operator.
Definition style.hpp:115
Definition view.hpp:232
Definition cadran_kit.hpp:106
void set(float fraction)
0..1
void draw(NVGcontext *vg, float x, float y, float width, float height, aurore::Style style, aurore::FrameContext *ctx) override
Definition cadran_kit.hpp:124
void frame(aurore::FrameContext *ctx) override
aurore::AccessibilityRole getDefaultAccessibilityRole() override
A button, said with its text.
Definition cadran_kit.hpp:131
Definition cadran_kit.hpp:71
void set(const char *color_key)
void draw(NVGcontext *vg, float x, float y, float width, float height, aurore::Style style, aurore::FrameContext *ctx) override
Mark(const char *color_key)
AccessibilityRole
Definition view_style.hpp:78
retro_time_t Time
Definition time.hpp:31
Definition cadran_kit.hpp:13
constexpr float TEXT_META
Definition cadran_kit.hpp:28
constexpr float RADIUS_CARD
Definition cadran_kit.hpp:21
std::string without_chevron(const std::string &value)
"12 changes ›" -> "12 changes"; "›" -> "".
constexpr float RADIUS_MODAL
Definition cadran_kit.hpp:23
NVGcolor color(const char *key)
constexpr float TEXT_BODY
Definition cadran_kit.hpp:31
aurore::Box * chip(const std::string &text, float height=48)
aurore::Label * display(const std::string &text, float size, const char *color_key="cadran/text")
aurore::Box * key(const char *letter, float size=24)
void fit_head(aurore::Box *row)
void wrap(aurore::View *row)
aurore::Box * kicker(const char *icon_name, const std::string &title)
A kicker with an icon before it, in a card: an icon and a title in capitals.
CadranIcon * icon(const char *name, float size, const char *color_key="cadran/text2")
An icon of the boards, size px square.
constexpr float TEXT_TITLE
Definition cadran_kit.hpp:33
aurore::Label * label(const std::string &text, float size, const char *color_key="cadran/text")
void set_kicker(aurore::Label *label, const std::string &text="")
aurore::Box * empty_around(aurore::Label *label, const char *icon_name)
std::string long_date()
aurore::Box * qr(const std::string &payload, float side, const std::string &title, const std::string &caption, float width=0)
constexpr float RADIUS_ROW
Definition cadran_kit.hpp:19
constexpr float RADIUS_ICON
Definition cadran_kit.hpp:20
constexpr float RADIUS_TOP
Definition cadran_kit.hpp:22
aurore::Box * top_card(bool grow)
void fit_button(aurore::Button *button)
const char * dot_of(NVGcolor value_color)
constexpr float TEXT_LEAD
Definition cadran_kit.hpp:32
Empty empty(const char *icon_name)
constexpr float TEXT_NOTE
Definition cadran_kit.hpp:30
aurore::Box * pill(const std::string &text, const char *dot_key)
constexpr float TEXT_KICKER
Definition cadran_kit.hpp:29
void draw_more_below(NVGcontext *vg, aurore::ScrollingFrame *frame, float x, float y, float width, float height, const char *color_key, float corner=0.0f)
aurore::Box * card(bool focusable, bool grow)
Definition text.hpp:13
Definition cadran_kit.hpp:139
aurore::Label * title
Definition cadran_kit.hpp:141
aurore::Box * box
Definition cadran_kit.hpp:140