SatCat5
gui_icons.h
Go to the documentation of this file.
1 // Copyright 2024-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
16 
17 #pragma once
18 #include <satcat5/types.h>
19 
20 namespace satcat5 {
21  namespace gui {
25  struct Icon8x8 {
26  u8 data[8];
27 
28  // Explicitly declare default constructor and copy operations.
29  Icon8x8() = default;
30  Icon8x8(const Icon8x8& t) = default;
31  Icon8x8& operator=(const Icon8x8& t) = default;
32 
36  inline bool rc(u16 r, u16 c) const
37  { return !!(data[r] & (1 << c)); }
38 
39  inline u16 h() const { return 8; }
40  inline u16 w() const { return 8; }
41  };
42 
46  struct Icon16x16 {
47  u16 data[16];
48 
49  // Explicitly declare default constructor and copy operations.
50  Icon16x16() = default;
51  Icon16x16(const Icon16x16& t) = default;
52  Icon16x16& operator=(const Icon16x16& t) = default;
53 
55  inline bool rc(u16 r, u16 c) const
56  { return !!(data[r] & (1 << c)); }
57 
58  inline u16 h() const { return 16; }
59  inline u16 w() const { return 16; }
60  };
61 
65  struct Icon32x32 {
66  u32 data[32];
67 
68  // Explicitly declare default constructor and copy operations.
69  Icon32x32() = default;
70  Icon32x32(const Icon32x32& t) = default;
71  Icon32x32& operator=(const Icon32x32& t) = default;
72 
74  inline bool rc(u16 r, u16 c) const
75  { return !!(data[r] & (1 << c)); }
76 
77  inline u16 h() const { return 32; }
78  inline u16 w() const { return 32; }
79  };
80 
86  template <class T> class Font {
87  public:
89  explicit constexpr Font(const T* data)
90  : m_data(data) {}
91 
93  const T* icon(char c) const {
94  if (c < 0x20 || c > 0x7E) return 0;
95  return m_data + unsigned(c - 0x20);
96  }
97 
98  protected:
99  const T* const m_data;
100  };
101 
105 
107  template <class T> struct Animation {
108  const T* icons;
109  unsigned count;
110  unsigned msec;
111  };
112 
114  extern const Font8x8 BASIC_FONT;
115 
118  extern const Icon16x16 AEROLOGO_ICON16;
119  extern const Icon32x32 AEROLOGO_ICON32;
121 
123  extern const Icon8x8 PAW_ICON8;
124 
127  extern const Icon8x8 SATCAT5_ICON8;
128  extern const Icon16x16 SATCAT5_ICON16;
130 
135  extern const Icon16x16
138  constexpr Animation<Icon16x16>
148  }
149 }
The Font class maps characters to fixed-size icons.
Definition: gui_icons.h:86
constexpr Font(const T *data)
Link the Font to an array of icon objects in ASCII order.
Definition: gui_icons.h:89
const T * icon(char c) const
Fetch the icon associated with a given character.
Definition: gui_icons.h:93
constexpr Animation< Icon16x16 > ANIM_CAT_SIT
Animations of a cat performing various activities.
Definition: gui_icons.h:144
const Icon16x16 CAT_PAW[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:136
constexpr Animation< Icon16x16 > ANIM_CAT_GROOM
Animations of a cat performing various activities.
Definition: gui_icons.h:139
constexpr Animation< Icon16x16 > ANIM_CAT_PAW
Animations of a cat performing various activities.
Definition: gui_icons.h:141
constexpr Animation< Icon16x16 > ANIM_CAT_WALK
Animations of a cat performing various activities.
Definition: gui_icons.h:146
const Icon32x32 AEROLOGO_ICON32
The Aerospace Corporation logo in various sizes.
Definition: gui_icons.cc:121
const Icon8x8 PAW_ICON8
A cat's paw or footprint.
Definition: gui_icons.cc:132
const Icon16x16 SATCAT5_ICON16
The SatCat5 mascot in various sizes.
Definition: gui_icons.cc:138
const Icon16x16 CAT_SLEEP[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:137
const Icon16x16 AEROLOGO_ICON16
The Aerospace Corporation logo in various sizes.
Definition: gui_icons.cc:118
constexpr Animation< Icon16x16 > ANIM_CAT_POUNCE
Animations of a cat performing various activities.
Definition: gui_icons.h:142
const Icon16x16 CAT_RUN[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:137
constexpr Animation< Icon16x16 > ANIM_CAT_HISS
Animations of a cat performing various activities.
Definition: gui_icons.h:140
constexpr Animation< Icon16x16 > ANIM_CAT_RUN
Animations of a cat performing various activities.
Definition: gui_icons.h:143
const Icon16x16 CAT_WALK[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:137
constexpr Animation< Icon16x16 > ANIM_CAT_SLEEP
Animations of a cat performing various activities.
Definition: gui_icons.h:145
const Icon16x16 CAT_GROOM[8]
Animations of a cat performing various activities.
Definition: gui_icons.cc:147
const Icon8x8 SATCAT5_ICON8
The SatCat5 mascot in various sizes.
Definition: gui_icons.cc:136
const Icon16x16 CAT_SIT[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:137
const Icon16x16 CAT_HISS[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:136
const Icon16x16 CAT_POUNCE[8]
Animations of a cat performing various activities.
Definition: gui_icons.h:136
const Font8x8 BASIC_FONT
A basic fixed-width 8x8 font.
A data structure for storing a looping sequence of icons.
Definition: gui_icons.h:107
unsigned count
An array of icons.
Definition: gui_icons.h:109
unsigned msec
Number of icon frames.
Definition: gui_icons.h:110
Plain-old-data struct for a 16x16 monochrome image.
Definition: gui_icons.h:46
u16 data[16]
16 x 16 pixels = 32 bytes
Definition: gui_icons.h:47
bool rc(u16 r, u16 c) const
Get pixel value at designated row and column.
Definition: gui_icons.h:55
u16 w() const
Height of this icon.
Definition: gui_icons.h:59
u16 h() const
Width of this icon.
Definition: gui_icons.h:58
Plain-old-data struct for a 32x32 monochrome image.
Definition: gui_icons.h:65
u16 h() const
Width of this icon.
Definition: gui_icons.h:77
bool rc(u16 r, u16 c) const
Get pixel value at designated row and column.
Definition: gui_icons.h:74
u32 data[32]
32 x 32 pixels = 128 bytes
Definition: gui_icons.h:66
u16 w() const
Height of this icon.
Definition: gui_icons.h:78
Plain-old-data struct for an 8x8 monochrome image.
Definition: gui_icons.h:25
bool rc(u16 r, u16 c) const
Get pixel value at designated row and column.
Definition: gui_icons.h:36
u16 w() const
Height of this icon.
Definition: gui_icons.h:40
u8 data[8]
8 x 8 pixels = 8 bytes
Definition: gui_icons.h:26
u16 h() const
Width of this icon.
Definition: gui_icons.h:39
Basic type aliases and prototypes used throughout SatCat5.