PACS System 0.1.0
PACS DICOM system library
Loading...
Searching...
No Matches
console_utils.h
Go to the documentation of this file.
1
9#pragma once
10
12
13#include <string>
14#include <string_view>
15#include <vector>
16
17namespace kcenon::pacs::samples {
18
19// ============================================================================
20// ANSI Color Codes
21// ============================================================================
22
33namespace colors {
34
36constexpr const char* reset = "\033[0m";
37
39constexpr const char* bold = "\033[1m";
40
42constexpr const char* dim = "\033[2m";
43
45constexpr const char* black = "\033[30m";
46constexpr const char* red = "\033[31m";
47constexpr const char* green = "\033[32m";
48constexpr const char* yellow = "\033[33m";
49constexpr const char* blue = "\033[34m";
50constexpr const char* magenta = "\033[35m";
51constexpr const char* cyan = "\033[36m";
52constexpr const char* white = "\033[37m";
53
55constexpr const char* bright_red = "\033[91m";
56constexpr const char* bright_green = "\033[92m";
57constexpr const char* bright_yellow = "\033[93m";
58constexpr const char* bright_blue = "\033[94m";
59constexpr const char* bright_magenta = "\033[95m";
60constexpr const char* bright_cyan = "\033[96m";
61constexpr const char* bright_white = "\033[97m";
62
64constexpr const char* bg_red = "\033[41m";
65constexpr const char* bg_green = "\033[42m";
66constexpr const char* bg_yellow = "\033[43m";
67constexpr const char* bg_blue = "\033[44m";
68
69} // namespace colors
70
71// ============================================================================
72// Console Utilities
73// ============================================================================
74
81[[nodiscard]] auto supports_color() noexcept -> bool;
82
89void set_color_enabled(bool enabled);
90
95[[nodiscard]] auto is_color_enabled() noexcept -> bool;
96
97// ============================================================================
98// Message Printing
99// ============================================================================
100
110void print_header(std::string_view title);
111
119void print_section(std::string_view title);
120
127void print_success(std::string_view message);
128
135void print_error(std::string_view message);
136
143void print_warning(std::string_view message);
144
151void print_info(std::string_view message);
152
159void print_debug(std::string_view message);
160
161// ============================================================================
162// DICOM Data Display
163// ============================================================================
164
172void print_dataset_summary(const core::dicom_dataset& ds);
173
181void print_dataset_elements(const core::dicom_dataset& ds,
182 size_t max_value_length = 60);
183
184// ============================================================================
185// Box Drawing
186// ============================================================================
187
198void print_box(const std::vector<std::string>& lines);
199
212void print_table(std::string_view title,
213 const std::vector<std::pair<std::string, std::string>>& rows);
214
215// ============================================================================
216// Progress Display
217// ============================================================================
218
229void print_progress(size_t current, size_t total, int width = 40,
230 std::string_view label = "Progress");
231
235void clear_line();
236
237// ============================================================================
238// Formatting Utilities
239// ============================================================================
240
246[[nodiscard]] auto format_bytes(uint64_t bytes) -> std::string;
247
253[[nodiscard]] auto format_duration(uint64_t milliseconds) -> std::string;
254
261[[nodiscard]] auto center_text(std::string_view text, size_t width) -> std::string;
262
270[[nodiscard]] auto truncate(std::string_view text, size_t max_length,
271 std::string_view suffix = "...") -> std::string;
272
273} // namespace kcenon::pacs::samples
DICOM Dataset - ordered collection of Data Elements.
constexpr const char * bright_yellow
constexpr const char * bg_blue
constexpr const char * reset
Reset all formatting.
constexpr const char * white
constexpr const char * red
constexpr const char * bold
Bold text.
constexpr const char * blue
constexpr const char * bg_red
Background colors.
constexpr const char * dim
Dim/faint text.
constexpr const char * bright_blue
constexpr const char * bright_green
constexpr const char * yellow
constexpr const char * bg_green
constexpr const char * magenta
constexpr const char * bright_magenta
constexpr const char * bg_yellow
constexpr const char * green
constexpr const char * bright_cyan
constexpr const char * bright_red
Bright/bold colors.
constexpr const char * black
Standard colors.
constexpr const char * bright_white
constexpr const char * cyan
void print_dataset_summary(const core::dicom_dataset &ds)
Print a summary of a DICOM dataset.
void set_color_enabled(bool enabled)
Enable or disable color output globally.
void print_error(std::string_view message)
Print an error message.
void print_table(std::string_view title, const std::vector< std::pair< std::string, std::string > > &rows)
Print a key-value table.
auto truncate(std::string_view text, size_t max_length, std::string_view suffix) -> std::string
Truncate a string to a maximum length.
void print_debug(std::string_view message)
Print a debug message.
auto supports_color() noexcept -> bool
Check if the terminal supports ANSI colors.
void print_progress(size_t current, size_t total, int width, std::string_view label)
Print a progress bar.
void print_header(std::string_view title)
Print a header/title with decorative border.
auto center_text(std::string_view text, size_t width) -> std::string
Center a string within a given width.
auto format_duration(uint64_t milliseconds) -> std::string
Format a duration in milliseconds.
auto format_bytes(uint64_t bytes) -> std::string
Format a byte size for human-readable display.
void print_info(std::string_view message)
Print an informational message.
void clear_line()
Clear the current line (for updating progress)
void print_success(std::string_view message)
Print a success message.
auto is_color_enabled() noexcept -> bool
Check if colors are currently enabled.
void print_dataset_elements(const core::dicom_dataset &ds, size_t max_value_length)
Print all elements in a DICOM dataset.
void print_section(std::string_view title)
Print a section header.
void print_box(const std::vector< std::string > &lines)
Print text in a decorative box.
void print_warning(std::string_view message)
Print a warning message.