---
title: "ClikaRT::progress::Bar"
sidebar_label: "Bar"
description: "A lightweight handle to a bar owned by a ProgressGroup. Returned by ProgressGroup::add_bar(); copyable and non-owning (valid while its group lives)."
---

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

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

**Header:** `ClikaRT/progress/progress.h`

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.

## Member functions

### total() {#total}

<div class="api-signature">

`Bar&` **`total`**(`double` `max`)

</div>

Upper bound. Also applies MID-RUN: calling [total()](./Bar.md#total) after the bar is live updates the live bar (a download whose size becomes known after the first bytes).

<div class="api-declared">

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

</div>

### min() {#min}

<div class="api-signature">

`Bar&` **`min`**(`double` `value`)

</div>

lower bound (default 0)

<div class="api-declared">

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

</div>

### width() {#width}

<div class="api-signature">

`Bar&` **`width`**(`int` `cells`)

</div>

bar cells; 0 = auto-fit (default)

<div class="api-declared">

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

</div>

### prefix() {#prefix}

<div class="api-signature">

`Bar&` **`prefix`**(`std::string_view` `text`)

</div>

text before the bar

<div class="api-declared">

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

</div>

### postfix() {#postfix}

<div class="api-signature">

`Bar&` **`postfix`**(`std::string_view` `text`)

</div>

text after the bar

<div class="api-declared">

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

</div>

### color() {#color}

<div class="api-signature">

`Bar&` **`color`**([`Color`](./index.md#Color) `c`)

</div>

bar color

<div class="api-declared">

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

</div>

### unit() {#unit}

<div class="api-signature">

`Bar&` **`unit`**(`std::string_view` `u`)

</div>

rate/count unit (default "it")

<div class="api-declared">

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

</div>

### as\_bytes() {#as_bytes}

<div class="api-signature">

`Bar&` **`as_bytes`**(`bool` `on` `=` `true`)

</div>

humanize counts/rate as bytes

<div class="api-declared">

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

</div>

### smoothing\_window() {#smoothing_window}

<div class="api-signature">

`Bar&` **`smoothing_window`**(`std::size_t` `n`)

</div>

Average the rate/ETA over the last `n` updates (a sliding window) so the displayed speed doesn't jump each tick; `n == 0` keeps EMA smoothing.

<div class="api-declared">

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

</div>

### block() {#block}

<div class="api-signature">

`Bar&` **`block`**(`bool` `on` `=` `true`)

</div>

smooth sub-cell (block-eighth) fill

<div class="api-declared">

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

</div>

### show\_percent() {#show_percent}

<div class="api-signature">

`Bar&` **`show_percent`**(`bool` `on` `=` `true`)

</div>

show percent complete

<div class="api-declared">

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

</div>

### show\_count() {#show_count}

<div class="api-signature">

`Bar&` **`show_count`**(`bool` `on` `=` `true`)

</div>

show n/total

<div class="api-declared">

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

</div>

### show\_eta() {#show_eta}

<div class="api-signature">

`Bar&` **`show_eta`**(`bool` `on` `=` `true`)

</div>

show time remaining

<div class="api-declared">

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

</div>

### show\_rate() {#show_rate}

<div class="api-signature">

`Bar&` **`show_rate`**(`bool` `on` `=` `true`)

</div>

show rate (unit/s)

<div class="api-declared">

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

</div>

### set\_progress() {#set_progress}

<div class="api-signature">

`void` **`set_progress`**(`double` `value`)

</div>

absolute progress, clamped to \[min, total\]

<div class="api-declared">

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

</div>

### tick() {#tick}

<div class="api-signature">

`void` **`tick`**(`double` `n` `=` `1.0`)

</div>

advance by n

<div class="api-declared">

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

</div>

### set\_postfix() {#set_postfix}

<div class="api-signature">

`void` **`set_postfix`**(`std::string_view` `text`)

</div>

update the postfix mid-run

<div class="api-declared">

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

</div>

### mark\_completed() {#mark_completed}

<div class="api-signature">

`void` **`mark_completed`**()

</div>

jump to 100%

<div class="api-declared">

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

</div>

### value() {#value}

<div class="api-signature">

`double` **`value`**() `const`

</div>

current progress value

<div class="api-declared">

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

</div>

### completed() {#completed}

<div class="api-signature">

`bool` **`completed`**() `const`

</div>

whether the bar finished

<div class="api-declared">

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

</div>
