# ZCommon

The `ZCommon.h` header contains types, enums and constants shared by various classes in Tui Widgets.

class Tui

  This is actually a namespace.

class Tui::Misc

  This is actually a namespace.

enum Tui::ZItemDataRole
  enumerator LeftDecorationRole

    Item role used with `Tui::ZListView` to indicate the contents of the left decoration.

    Type: `QString`

  enumerator LeftDecorationFgRole

    Item role used with `Tui::ZListView` to indicate the foreground color of the left decoration.

    Type: `Tui::ZColor`

  enumerator LeftDecorationBgRole

    Item role used with `Tui::ZListView` to indicate the background color of the left decoration.

    Type: `Tui::ZColor`

  enumerator LeftDecorationSpaceRole

    Item role used with `Tui::ZListView` to indicate amount of space between the left decoration (if any) and the item text.

    Type: int

enum class Tui::CursorStyle
  enumerator Unset

    Use terminal default cursor style

  enumerator Block

    Use block cursor style if supported

  enumerator Underline

    Use underline cursor style if supported

  enumerator Bar

    Use bar cursor style if supported

using Tui::ZTextAttributes = QFlags<Tui::ZTextAttribute>

enum class Tui::ZTextAttribute
  enumerator Bold
  enumerator Italic
  enumerator Blink
  enumerator Overline
  enumerator Inverse
  enumerator Strike
  enumerator Underline
  enumerator UnderlineDouble
  enumerator UnderlineCurly

static constexpr int Tui::Erased = 127

  Character value for the special erased state.

  On supported terminals trailing erased cells in a line will not add whitespace when copying text from the terminal.

enum class Tui::ZTilingMode

  When drawing an image on a painter with double wide characters on the edges of the source rectangle, selects how to handle these characters.

  enumerator NoTiling

    Partial clusters in the source are copied to the destination as spaces for the part of the cluster that is inside the rectangle. If clusters in the destination cross the boundary they are erased before the copy is made. (The part of the cluster outside the rectangle preserves it’s attributes but the text is replaced by spaces)

  enumerator Preserve

    If clusters in the destination line up with clusters in source, the cluster in the destination is preserved. This allows seamlessly extending a copy made with TERMPAINT_COPY_TILE_PUT without overwriting previously copied cells.

  enumerator Put

    Clusters in the source will be copied into the destination even if that means modifying cells outside of the destination rectangle. This allows copying a larger region in multiple steps.

class Tui::WithMarkupTag

constexpr Tui::WithMarkupTag Tui::withMarkup{}

  Marker tag for overloads using markup for the following string arguement.

## Aliases from Qt

Tui Widgets shares some enums with Qt. For many enums commonly used with widgets they are reexported in `Tui` namespace for more consistent usage. In some cases Qt defines more choices than what is supported with Tui Widgets, in these cases only the supported choices are reexported here.

using Tui::CheckState = Qt::CheckState

enumerator Tui::Unchecked = Qt::Unchecked

enumerator Tui::PartiallyChecked = Qt::PartiallyChecked

enumerator Tui::Checked = Qt::Checked

using Tui::KeyboardModifier = Qt::KeyboardModifier

using Tui::KeyboardModifiers = Qt::KeyboardModifiers

enumerator Tui::NoModifier = Qt::NoModifier

enumerator Tui::ShiftModifier = Qt::ShiftModifier

enumerator Tui::AltModifier = Qt::AltModifier

enumerator Tui::ControlModifier = Qt::ControlModifier

enumerator Tui::KeypadModifier = Qt::KeypadModifier

using Tui::Key = Qt::Key

enumerator Tui::Key_0 = Qt::Key_0

enumerator Tui::Key_1 = Qt::Key_1

enumerator Tui::Key_2 = Qt::Key_2

enumerator Tui::Key_3 = Qt::Key_3

enumerator Tui::Key_4 = Qt::Key_4

enumerator Tui::Key_5 = Qt::Key_5

enumerator Tui::Key_6 = Qt::Key_6

enumerator Tui::Key_7 = Qt::Key_7

enumerator Tui::Key_8 = Qt::Key_8

enumerator Tui::Key_9 = Qt::Key_9

enumerator Tui::Key_Backspace = Qt::Key_Backspace

enumerator Tui::Key_Delete = Qt::Key_Delete

enumerator Tui::Key_Down = Qt::Key_Down

enumerator Tui::Key_End = Qt::Key_End

enumerator Tui::Key_Enter = Qt::Key_Enter

enumerator Tui::Key_Escape = Qt::Key_Escape

enumerator Tui::Key_F1 = Qt::Key_F1

enumerator Tui::Key_F2 = Qt::Key_F2

enumerator Tui::Key_F3 = Qt::Key_F3

enumerator Tui::Key_F4 = Qt::Key_F4

enumerator Tui::Key_F5 = Qt::Key_F5

enumerator Tui::Key_F6 = Qt::Key_F6

enumerator Tui::Key_F7 = Qt::Key_F7

enumerator Tui::Key_F8 = Qt::Key_F8

enumerator Tui::Key_F9 = Qt::Key_F9

enumerator Tui::Key_F10 = Qt::Key_F10

enumerator Tui::Key_F11 = Qt::Key_F11

enumerator Tui::Key_F12 = Qt::Key_F12

enumerator Tui::Key_Home = Qt::Key_Home

enumerator Tui::Key_Insert = Qt::Key_Insert

enumerator Tui::Key_Left = Qt::Key_Left

enumerator Tui::Key_Menu = Qt::Key_Menu

enumerator Tui::Key_Minus = Qt::Key_Minus

enumerator Tui::Key_PageDown = Qt::Key_PageDown

enumerator Tui::Key_PageUp = Qt::Key_PageUp

enumerator Tui::Key_Period = Qt::Key_Period

enumerator Tui::Key_Plus = Qt::Key_Plus

enumerator Tui::Key_Right = Qt::Key_Right

enumerator Tui::Key_Space = Qt::Key_Space

enumerator Tui::Key_Tab = Qt::Key_Tab

enumerator Tui::Key_Up = Qt::Key_Up

enumerator Tui::Key_division = Qt::Key_division

enumerator Tui::Key_multiply = Qt::Key_multiply

enumerator Tui::Key_unknown = Qt::Key_unknown

using Tui::FocusReason = Qt::FocusReason

enumerator Tui::TabFocusReason = Qt::TabFocusReason

enumerator Tui::BacktabFocusReason = Qt::BacktabFocusReason

enumerator Tui::ActiveWindowFocusReason = Qt::ActiveWindowFocusReason

enumerator Tui::ShortcutFocusReason = Qt::ShortcutFocusReason

enumerator Tui::OtherFocusReason = Qt::OtherFocusReason

using Tui::FocusPolicy = Qt::FocusPolicy

enumerator Tui::NoFocus = Qt::NoFocus

enumerator Tui::StrongFocus = Qt::StrongFocus

enumerator Tui::TabFocus = Qt::TabFocus

using Tui::Alignment = Qt::Alignment

enumerator Tui::AlignHorizontal_Mask = Qt::AlignHorizontal_Mask

enumerator Tui::AlignLeft = Qt::AlignLeft

enumerator Tui::AlignRight = Qt::AlignRight

enumerator Tui::AlignVertical_Mask = Qt::AlignVertical_Mask

enumerator Tui::AlignTop = Qt::AlignTop

enumerator Tui::AlignBottom = Qt::AlignBottom

enumerator Tui::AlignVCenter = Qt::AlignVCenter

enumerator Tui::AlignHCenter = Qt::AlignHCenter

using Tui::ShortcutContext = Qt::ShortcutContext

enumerator Tui::WidgetShortcut = Qt::WidgetShortcut

enumerator Tui::WindowShortcut = Qt::WindowShortcut

enumerator Tui::ApplicationShortcut = Qt::ApplicationShortcut

enumerator Tui::WidgetWithChildrenShortcut = Qt::WidgetWithChildrenShortcut

using Tui::Edges = Qt::Edges

enumerator Tui::TopEdge = Qt::TopEdge

enumerator Tui::LeftEdge = Qt::LeftEdge

enumerator Tui::RightEdge = Qt::RightEdge

enumerator Tui::BottomEdge = Qt::BottomEdge

## Private Types

template<>
class Tui::Private::ZMoFunc<void(QEvent*)>

template<>
class Tui::Private::ZMoFunc<bool()>

  This private type is used to store callable objects internally.

class Tui::Private

  Namespace for private objects.

  Do not use members of this namespace in application code.

class uint32_t

  Figure out how to suppress missing type warning regarding this