| 1960 | Settings, typename std::decay<Args>::type...>::value, |
| 1961 | void *>::type = nullptr> |
| 1962 | explicit ProgressBar(Args &&... args) |
| 1963 | : settings_( |
| 1964 | details::get<details::ProgressBarOption::bar_width>( |
| 1965 | option::BarWidth{100}, std::forward<Args>(args)...), |
| 1966 | details::get<details::ProgressBarOption::prefix_text>( |
| 1967 | option::PrefixText{}, std::forward<Args>(args)...), |
| 1968 | details::get<details::ProgressBarOption::postfix_text>( |
| 1969 | option::PostfixText{}, std::forward<Args>(args)...), |
| 1970 | details::get<details::ProgressBarOption::start>( |
| 1971 | option::Start{"["}, std::forward<Args>(args)...), |
| 1972 | details::get<details::ProgressBarOption::end>( |
| 1973 | option::End{"]"}, std::forward<Args>(args)...), |
| 1974 | details::get<details::ProgressBarOption::fill>( |
| 1975 | option::Fill{"="}, std::forward<Args>(args)...), |
| 1976 | details::get<details::ProgressBarOption::lead>( |
| 1977 | option::Lead{">"}, std::forward<Args>(args)...), |
| 1978 | details::get<details::ProgressBarOption::remainder>( |
| 1979 | option::Remainder{" "}, std::forward<Args>(args)...), |
| 1980 | details::get<details::ProgressBarOption::max_postfix_text_len>( |
| 1981 | option::MaxPostfixTextLen{0}, std::forward<Args>(args)...), |
| 1982 | details::get<details::ProgressBarOption::completed>( |
| 1983 | option::Completed{false}, std::forward<Args>(args)...), |
| 1984 | details::get<details::ProgressBarOption::show_percentage>( |
| 1985 | option::ShowPercentage{false}, std::forward<Args>(args)...), |
| 1986 | details::get<details::ProgressBarOption::show_elapsed_time>( |
| 1987 | option::ShowElapsedTime{false}, std::forward<Args>(args)...), |
| 1988 | details::get<details::ProgressBarOption::show_remaining_time>( |
| 1989 | option::ShowRemainingTime{false}, std::forward<Args>(args)...), |
| 1990 | details::get<details::ProgressBarOption::saved_start_time>( |
| 1991 | option::SavedStartTime{false}, std::forward<Args>(args)...), |
| 1992 | details::get<details::ProgressBarOption::foreground_color>( |
| 1993 | option::ForegroundColor{Color::unspecified}, |
| 1994 | std::forward<Args>(args)...), |
| 1995 | details::get<details::ProgressBarOption::font_styles>( |
| 1996 | option::FontStyles{std::vector<FontStyle>{}}, |
| 1997 | std::forward<Args>(args)...), |
| 1998 | details::get<details::ProgressBarOption::min_progress>( |
| 1999 | option::MinProgress{0}, std::forward<Args>(args)...), |
| 2000 | details::get<details::ProgressBarOption::max_progress>( |
| 2001 | option::MaxProgress{100}, std::forward<Args>(args)...), |
| 2002 | details::get<details::ProgressBarOption::progress_type>( |
| 2003 | option::ProgressType{ProgressType::incremental}, |
| 2004 | std::forward<Args>(args)...), |
| 2005 | details::get<details::ProgressBarOption::stream>( |
| 2006 | option::Stream{std::cout}, std::forward<Args>(args)...)) { |
| 2007 | |
| 2008 | // if progress is incremental, start from min_progress |
| 2009 | // else start from max_progress |
| 2010 | const auto type = get_value<details::ProgressBarOption::progress_type>(); |
| 2011 | if (type == ProgressType::incremental) |
| 2012 | progress_ = get_value<details::ProgressBarOption::min_progress>(); |
| 2013 | else |
| 2014 | progress_ = get_value<details::ProgressBarOption::max_progress>(); |
| 2015 | } |
| 2016 | |
| 2017 | template <typename T, details::ProgressBarOption id> |
| 2018 | void set_option(details::Setting<T, id> &&setting) { |
nothing calls this directly
no outgoing calls
no test coverage detected