Aether
SDL2 based UI Framework for NX
Classes | Enumerations | Functions
Aether Namespace Reference

Base namespace for all Aether related classes and functions. More...

Classes

class  Animation
 An animation is an element containing a list of textures which are changed through to create the animation. Frames are managed by using *Element calls. More...
 
class  AsyncItem
 Abstract class which handles rendering child elements asynchronously based on the position of the element itself. Before/after the element comes into view the textures will be created/destroyed respectively. This can be set by overriding renderThreshold(). More...
 
class  BaseProgress
 Base element for progress bars that handles the value. More...
 
class  BaseText
 BaseText is an abstract class storing relevant information to render a text element. More...
 
class  BorderButton
 The BorderButton element looks similar to the unfilled buttons seen within Horizon. More...
 
class  Box
 Element for rendering a 'box' (rectangle with no fill). More...
 
class  Colour
 Stores RGBA values representing a colour. Each component can be within the range 0 to 255 (inclusive). More...
 
class  Container
 A container is an element that contains other elements. It implements the required behaviour to navigate between children. More...
 
class  ControlBar
 A container holding control elements (and nothing else) which automatically arranges them at the bottom of the screen. More...
 
class  ControlItem
 An item used by and updated by the ControlBar element. It shows a button icon and label. More...
 
class  DateTime
 The DateTime overlay is used to get the user to select a date/time. It must be passed a tm struct on creation which has it's value changed in place when closed (not updated when closed by pressing B!) More...
 
class  Drawable
 Stores either a surface or texture which can be drawn on screen by providing a renderer to render(). More...
 
class  Element
 Element is the base class to be inherited to form all other types of elements. More...
 
class  Ellipse
 Element for rendering an ellipse. More...
 
class  FilledButton
 A FilledButton is exactly that. The text/rectangle are resized/repositioned to be centered on any resizes. More...
 
class  FontCache
 Caches SDL_ttf font objects + surfaces to reduce rendering. This class is not thread-safe, all operations should be protected from the outside by a mutex. More...
 
class  GlyphMetrics
 Class storing metrics for a font's character. Designed to be read-only as it is only able to return values passed at construction. More...
 
class  HelpButton
 HelpButton is a round button displaying a question mark as seen in Horizon. More...
 
class  Image
 Element for rendering an image, either from memory or a file system. More...
 
class  ImageData
 Represents an object containing the raw pixel data for an image/texture as an array, along with required metadata such as width and height. More...
 
class  InputEvent
 A class that represents an Aether input event. More...
 
class  List
 A list is a scrollable with some values changed to match how a list functions within Horizon. More...
 
class  ListButton
 A ListButton is similar to what appears in Horizon's lists. It has a string and should be used to open something else. More...
 
class  ListComment
 A ListComment is a sentence/paragraph usually found under an option describing what it does. More...
 
class  ListHeading
 A ListHeading is a small rectangle with text alongside, usually used in a list. More...
 
class  ListHeadingHelp
 A ListHeading but with a help icon that's right aligned. More...
 
class  ListOption
 A ListOption is similar to what appears in Horizon's lists. It has a string and value, as well as a function which is called when selected. More...
 
class  ListSeparator
 ListSeparator is simply a blank element. It has a default height which matches Horizon's but can be changed if necessary using setH() More...
 
class  LRUCache
 A basic LRU (least recently used) cache implementation. Also supports a custom callback for when an item is removed. More...
 
class  Menu
 A menu is simply a scrollable object that sets some values on creation in order to appear like Horizon's menu. More...
 
class  MenuOption
 A MenuOption is a combination of elements which looks like and functions similar to Horizon's. All children are handled internally. More...
 
class  MenuSeparator
 A MenuSeparator contains a rectangle with some padding above/below. It is not selectable. More...
 
class  MessageBox
 A "MessageBox" is a box presented in the middle of the screen, usually containing a few yes/no/cancel buttons and some text. Buttons are set up using the provided functions whereas the "body" of the box is set by giving an element containing the desired elements. More...
 
class  Overlay
 An object representing an overlay. More...
 
class  PopupList
 A "PopupList" is an overlay at the bottom of the screen containing a list of items to select from. A handler must be specified for each item, and the overlay is closed when any item is selected. More...
 
class  ProgressBar
 ProgressBar looks similar to Horizon's progress bar shown in data management. More...
 
class  Rectangle
 A rectangle is a texture containing either a normal or rounded rectangle. More...
 
class  Renderer
 Aether's main renderer instance. It provides all methods relating to drawing directly to the screen, rendering graphics to memory as well as measuring resource usage (with respect to textures). More...
 
class  RoundProgressBar
 A RoundProgressBar is a completely filled progress bar rounded at either end. More...
 
class  Screen
 A class that represents a screen layout Stores all screen elements for a specific screen. More...
 
class  Scrollable
 A scrollable element arranges all of it's children as a list. It's children are rendered and 'cut off' outside the dimensions of the scrollable object. Note that added elements will have their width changed to match the list! Also note that elements are placed directly below the previous element (in terms of y-coords)! More...
 
class  Spinner
 A Spinner contains a number which can be increased/decreased by pressing the associated up/down buttons or the dpad. More...
 
class  Text
 Element for rendering a single line of text. It can optionally scroll when overflowing. More...
 
class  TextBlock
 Element for rendering a multi-line block of text. More...
 
class  Texture
 A Texture is an element that stores a texture to render in the window. It can't be instantiated alone as it's essentially a 'container' element, but is inherited by classes such as Text and Image which generate the texture. This class provides common getter methods and handles rendering texture asynchronously. More...
 
struct  Theme_T
 Struct for UI Theme. More...
 
class  ThreadPool
 Basic Thread Pool implemented as a singleton. More...
 
class  Tick
 A Tick is an element that looks the same as the tick shown in Horizon - a coloured circle with a tick on top. More...
 
class  Timer
 Small utility class to measure time. More...
 
class  Window
 The Window is the root element, which initializes Aether and contains all of the screens/elements to render. It also handles received events and passes them down the tree. More...
 

Enumerations

enum  Render { Render::Sync, Render::Async, Render::Wait }
 Supported "on create" texture rendering options. More...
 
enum  DTFlag {
  DTFlag::DateTime = 0b00111111, DTFlag::Date = 0b00111000, DTFlag::Time = 0b00000111, DTFlag::Day = 0b00100000,
  DTFlag::Month = 0b00010000, DTFlag::Year = 0b00001000, DTFlag::Hour = 0b00000100, DTFlag::Min = 0b00000010,
  DTFlag::Sec = 0b00000001
}
 Spinners to show (create custom by passing bitwise OR of multiple flags!) Each bit represents in the order - 0b00DMYHMS (Day / Month / Year / Hour / Minute / Second) More...
 
enum  EventType {
  ButtonPressed, ButtonReleased, TouchPressed, TouchMoved,
  TouchReleased
}
 Enum class that contains all events types supported by Aether for handling. More...
 
enum  Button {
  A, B, X, Y,
  LSTICK, RSTICK, L, R,
  ZL, ZR, PLUS, MINUS,
  DPAD_LEFT, DPAD_UP, DPAD_RIGHT, DPAD_DOWN,
  LSTICK_LEFT, LSTICK_UP, LSTICK_RIGHT, LSTICK_DOWN,
  RSTICK_LEFT, RSTICK_UP, RSTICK_RIGHT, RSTICK_DOWN,
  SL_LEFT, SR_LEFT, SL_RIGHT, SR_RIGHT,
  NO_BUTTON
}
 Enum class for buttons Avoids confusion with SDL/libnx names. More...
 
enum  Padding { Padding::Default, Padding::FitScrollbar, Padding::None }
 Enum class for amount of padding in a scrollable. More...
 

Functions

DTFlag operator| (DTFlag a, DTFlag b)
 Bitwise OR operator for DTFlag. More...
 

Detailed Description

Base namespace for all Aether related classes and functions.

Enumeration Type Documentation

◆ Button

Enum class for buttons Avoids confusion with SDL/libnx names.

Enumerator

Button A

Button B

Button X

Button Y

LSTICK 

Button Left Stick Click

RSTICK 

Button Right Stick Click

Button L

Button R

ZL 

Button ZL

ZR 

Button ZR

PLUS 

Button +

MINUS 

Button -

DPAD_LEFT 

Button D-Pad Left

DPAD_UP 

Button D-Pad Up

DPAD_RIGHT 

Button D-Pad Right

DPAD_DOWN 

Button D-Pad Down

LSTICK_LEFT 

Button Left Stick Left

LSTICK_UP 

Button Left Stick Up

LSTICK_RIGHT 

Button Left Stick Right

LSTICK_DOWN 

Button Left Stick Down

RSTICK_LEFT 

Button Right Stick Left

RSTICK_UP 

Button Right Stick Up

RSTICK_RIGHT 

Button Right Stick Right

RSTICK_DOWN 

Button Right Stick Down

SL_LEFT 

Left Joycon SL Button

SR_LEFT 

Left Joycon SR Button

SL_RIGHT 

Right Joycon SL Button

SR_RIGHT 

Right Joycon SR Button

NO_BUTTON 

Dummy button used for symbolising no button

◆ DTFlag

enum Aether::DTFlag
strong

Spinners to show (create custom by passing bitwise OR of multiple flags!) Each bit represents in the order - 0b00DMYHMS (Day / Month / Year / Hour / Minute / Second)

Enumerator
DateTime 

Shows all date and time

Date 

Shows all date

Time 

Shows all time

Day 

Shows day

Month 

Shows month

Year 

Shows year

Hour 

Shows hour

Min 

Shows minute

Sec 

Shows second

◆ EventType

Enum class that contains all events types supported by Aether for handling.

Enumerator
ButtonPressed 

Button press event

ButtonReleased 

Button release event

TouchPressed 

Touch press event

TouchMoved 

Touch move event

TouchReleased 

Touch release event

◆ Padding

enum Aether::Padding
strong

Enum class for amount of padding in a scrollable.

Enumerator
Default 

Default amount of padding (~5% of list width either side of item)

FitScrollbar 

No padding except to fit the scrollbar

None 

No padding whatsoever (item width = list width)

◆ Render

enum Aether::Render
strong

Supported "on create" texture rendering options.

Enumerator
Sync 

Render texture synchronously (i.e. as soon as created)

Async 

Render texture asynchronously on another thread

Wait 

Don't automatically render the texture

Function Documentation

◆ operator|()

DTFlag Aether::operator| ( DTFlag  a,
DTFlag  b 
)
inline

Bitwise OR operator for DTFlag.

Parameters
afirst flag
bsecond flag
Returns
resultant flag