polybar-dwm/include/components/builder.hpp
infokiller fb6e874235 feat(label): Add minlen with alignment (#1546)
* Add label minlen and alignment.

Fix build

* Update src/drawtypes/label.cpp

Co-Authored-By: infokiller <infokiller@users.noreply.github.com>

* Use existing alignment type.

* Remove redundant max_len handling in label::get.

* Fix shadowing.

* Add label alignment tests.

* Handle minlen/maxlen and alignment in same function.

Also add a test for a test case brought up in the PR discussion.

* Format files with clang-format

* Move builder::get_label_text tests into label tests

builder::get_label_text doesn't really do anything anymore

* builder: remove get_label_text

* label: Clean up label::get()

* Fix comment style.

* Set default label alignment to left.

* Update src/drawtypes/label.cpp

Co-Authored-By: Patrick Ziegler <p.ziegler96@gmail.com>

* Update include/drawtypes/label.hpp

Co-Authored-By: Patrick Ziegler <p.ziegler96@gmail.com>
2019-12-01 01:28:41 +01:00

77 lines
1.9 KiB
C++

#pragma once
#include <map>
#include "common.hpp"
#include "components/types.hpp"
POLYBAR_NS
using std::map;
// fwd decl
using namespace drawtypes;
class builder {
public:
explicit builder(const bar_settings& bar);
void reset();
string flush();
void append(string text);
void node(string str, bool add_space = false);
void node(string str, int font_index, bool add_space = false);
void node(const label_t& label, bool add_space = false);
void node_repeat(const string& str, size_t n, bool add_space = false);
void node_repeat(const label_t& label, size_t n, bool add_space = false);
void offset(int pixels = 0);
void space(size_t width);
void space();
void remove_trailing_space(size_t len);
void remove_trailing_space();
void font(int index);
void font_close();
void background(string color);
void background_close();
void color(string color);
void color_alpha(string alpha);
void color_close();
void line_color(const string& color);
void line_color_close();
void overline_color(string color);
void overline_color_close();
void underline_color(string color);
void underline_color_close();
void overline(const string& color = "");
void overline_close();
void underline(const string& color = "");
void underline_close();
void control(controltag tag);
void cmd(mousebtn index, string action, bool condition = true);
void cmd(mousebtn index, string action, const label_t& label);
void cmd_close(bool condition = true);
protected:
string background_hex();
string foreground_hex();
void tag_open(syntaxtag tag, const string& value);
void tag_open(attribute attr);
void tag_close(syntaxtag tag);
void tag_close(attribute attr);
private:
const bar_settings m_bar;
string m_output;
map<syntaxtag, int> m_tags{};
map<syntaxtag, string> m_colors{};
map<attribute, bool> m_attrs{};
int m_fontindex{0};
string m_background{};
string m_foreground{};
};
POLYBAR_NS_END