---
title: "ClikaRT::progress"
sidebar_label: "progress"
description: "Namespace ClikaRT::progress"
---

<!-- Generated by tools/doxygen2mdx from Doxygen XML. Do not edit. -->

<span class="api-kind api-kind--namespace">namespace</span>

## Classes

| Name | Description |
| --- | --- |
| [`Bar`](./Bar.md) | A lightweight handle to a bar owned by a [ProgressGroup](./ProgressGroup.md). Returned by [`ProgressGroup::add_bar()`](./ProgressGroup.md#add_bar); copyable and non-owning (valid while its group lives). Configure it with the fluent setters, then drive it; a bar may be added, configured, and driven at ANY time, including after the group has started rendering other bars (each bar materializes on its own first drive). Driving is safe at every point in the bar's life: a completed bar accepts further set\_progress/total/postfix calls. |
| [`ProgressBar`](./ProgressBar.md) | A standalone determinate progress bar over an arbitrary \[min, max\] range. |
| [`ProgressGroup`](./ProgressGroup.md) | Owns and renders several bars as one block: it controls the whole region and its cursor, so parallel bars never interleave or jump. [`print_above`](./ProgressGroup.md#print_above) emits a line above the live bars without corrupting them (raw on a terminal; routed through the default logging channel ([`logging::logger()`](../logging/index.md#logger)) when output isn't a terminal, so a handler installed there receives it). Writes to stdout. |
| [`Spinner`](./Spinner.md) | An indeterminate activity spinner for work with no measurable progress. |

## Enumerations

### enum Color {#Color}

<div class="api-signature">

`enum class` **`Color`**

</div>

Foreground color for a widget. `Default` keeps the terminal's own color.

| Enumerator | Description |
| --- | --- |
| `Default` | the terminal's own color |
| `Black` | ANSI black. |
| `Red` | ANSI red. |
| `Green` | ANSI green. |
| `Yellow` | ANSI yellow. |
| `Blue` | ANSI blue. |
| `Magenta` | ANSI magenta. |
| `Cyan` | ANSI cyan. |
| `White` | ANSI white. |
| `BrightBlack` | bright ANSI black (gray) |
| `BrightRed` | bright ANSI red |
| `BrightGreen` | bright ANSI green |
| `BrightYellow` | bright ANSI yellow |
| `BrightBlue` | bright ANSI blue |
| `BrightMagenta` | bright ANSI magenta |
| `BrightCyan` | bright ANSI cyan |
| `BrightWhite` | bright ANSI white |

<div class="api-declared">

Declared in `ClikaRT/progress/progress.h`, line 35

</div>

## `ClikaRT/progress/progress.h` {#progress-h}

```cpp
#include <ClikaRT/progress/progress.h>
```

[`ClikaRT::progress`](./index.md): terminal progress bars, spinners, and a single-owner multi-bar group with print-above-the-bar logging.

```text
ProgressBar bar;
bar.total(50).prefix("Training").color(Color::Green)
   .show_percent().show_eta().show_rate().unit("step");
for (int i = 1; i <= 50; ++i) bar.set_progress(i);
bar.done();
```

Output auto-disables when it isn't a terminal (piped / redirected), so logs stay clean. On a console that cannot show UTF-8 (a Windows console outside the UTF-8 code page, a POSIX `C` locale) the block glyphs give way to their ASCII forms; on Windows a live region also switches the console to VT processing and the UTF-8 code page for its lifetime and restores both after. Rendering never mutates global locale and never throws. Backed by the internal progress engine.

Configure a widget with the fluent setters BEFORE driving it (they take effect on the first draw); then drive it with set\_progress() / tick() / done().
