blob: 8795f51ad7af8e7d9df1985f10ccac8de62ccb97 [file] [log] [blame]
/*
* Copyright 2017 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef COBALT_BROWSER_MEMORY_SETTINGS_TABLE_PRINTER_H_
#define COBALT_BROWSER_MEMORY_SETTINGS_TABLE_PRINTER_H_
#include <string>
#include <vector>
namespace cobalt {
namespace browser {
namespace memory_settings {
// TablePrinter takes in rows of strings and then converts them into
// an ascii table that can be used to visualize information on stdout.
// Example:
// table.AddRow({"col1", "col2"});
// table.AddRow({"value1", "value2"});
// std::cout << table.ToString();
//
// --> outputs -->
//
// "col1 col2 \n"
// "+--------+--------+\n"
// "| value1 | value2 |\n"
// "+--------+--------+\n";
class TablePrinter {
public:
static bool SystemSupportsColor();
enum Color {
kDefault,
kRed,
kGreen,
kYellow,
kBlue,
kMagenta,
kCyan
};
typedef std::vector<std::string> Row;
TablePrinter();
void AddRow(const Row& row);
std::string ToString() const;
// Adds color to the string output. kDefault will omit any color value and
// just do straight text.
// Note: If SbLogIsTty() returns false then color output is disabled and its
// recommended that these functions are not called.
void set_text_color(Color text_color) { text_color_ = text_color; }
void set_table_color(Color table_color) { table_color_ = table_color; }
private:
std::vector<Row> table_;
Color text_color_;
Color table_color_;
};
} // namespace memory_settings
} // namespace browser
} // namespace cobalt
#endif // COBALT_BROWSER_MEMORY_SETTINGS_TABLE_PRINTER_H_