Replace ui:🏷️:multiline_mode with boolean ui:🏷️:wrap
This commit is contained in:
parent
34e2877873
commit
0be73e2816
3 changed files with 7 additions and 22 deletions
|
|
@ -26,13 +26,6 @@ namespace psemek::ui
|
|||
bottom,
|
||||
};
|
||||
|
||||
enum class multiline_mode
|
||||
{
|
||||
none, // single-line lable
|
||||
minimize_lines, // normal multiline text
|
||||
minimize_area, // as square as possible
|
||||
};
|
||||
|
||||
enum class overflow_mode
|
||||
{
|
||||
ignore,
|
||||
|
|
@ -52,8 +45,8 @@ namespace psemek::ui
|
|||
virtual void set_valign(valignment value);
|
||||
virtual valignment valign() const { return valign_; }
|
||||
|
||||
virtual void set_multiline(multiline_mode value);
|
||||
virtual multiline_mode multiline() const { return multiline_; }
|
||||
virtual void set_wrap(bool value);
|
||||
virtual bool wrap() const { return wrap_; }
|
||||
|
||||
virtual void set_overflow(overflow_mode value);
|
||||
virtual overflow_mode overflow() const { return overflow_; }
|
||||
|
|
@ -75,7 +68,7 @@ namespace psemek::ui
|
|||
std::string text_;
|
||||
halignment halign_ = halignment::left;
|
||||
valignment valign_ = valignment::top;
|
||||
multiline_mode multiline_ = multiline_mode::none;
|
||||
bool wrap_ = true;
|
||||
overflow_mode overflow_ = overflow_mode::ignore;
|
||||
bool skip_spaces_ = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ namespace psemek::ui
|
|||
l->set_valign(label::valignment::center);
|
||||
l->set_halign(label::halignment::center);
|
||||
l->set_overflow(label::overflow_mode::ellipsis);
|
||||
l->set_multiline(label::multiline_mode::none);
|
||||
b->set_label(l);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@ namespace psemek::ui
|
|||
on_state_changed();
|
||||
}
|
||||
|
||||
void label::set_multiline(multiline_mode value)
|
||||
void label::set_wrap(bool value)
|
||||
{
|
||||
multiline_ = value;
|
||||
wrap_ = value;
|
||||
on_state_changed();
|
||||
}
|
||||
|
||||
|
|
@ -115,20 +115,13 @@ namespace psemek::ui
|
|||
for (auto const & g : glyphs)
|
||||
raw_bbox |= g.position;
|
||||
|
||||
std::size_t max_lines;
|
||||
std::size_t max_lines = 1;
|
||||
|
||||
switch (multiline_)
|
||||
if (wrap_)
|
||||
{
|
||||
case multiline_mode::none:
|
||||
max_lines = 1;
|
||||
break;
|
||||
case multiline_mode::minimize_lines:
|
||||
max_lines = std::isfinite(bbox[1].length())
|
||||
? std::max<std::size_t>(1, std::floor(bbox[1].length() / st->font->size()[1] / (*st->text_scale)))
|
||||
: std::numeric_limits<std::size_t>::max();
|
||||
break;
|
||||
case multiline_mode::minimize_area:
|
||||
throw std::runtime_error("multiline_mode::minimize_area is not supported yet");
|
||||
}
|
||||
|
||||
std::vector<std::pair<std::size_t, std::size_t>> lines;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue