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,
|
bottom,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class multiline_mode
|
|
||||||
{
|
|
||||||
none, // single-line lable
|
|
||||||
minimize_lines, // normal multiline text
|
|
||||||
minimize_area, // as square as possible
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class overflow_mode
|
enum class overflow_mode
|
||||||
{
|
{
|
||||||
ignore,
|
ignore,
|
||||||
|
|
@ -52,8 +45,8 @@ namespace psemek::ui
|
||||||
virtual void set_valign(valignment value);
|
virtual void set_valign(valignment value);
|
||||||
virtual valignment valign() const { return valign_; }
|
virtual valignment valign() const { return valign_; }
|
||||||
|
|
||||||
virtual void set_multiline(multiline_mode value);
|
virtual void set_wrap(bool value);
|
||||||
virtual multiline_mode multiline() const { return multiline_; }
|
virtual bool wrap() const { return wrap_; }
|
||||||
|
|
||||||
virtual void set_overflow(overflow_mode value);
|
virtual void set_overflow(overflow_mode value);
|
||||||
virtual overflow_mode overflow() const { return overflow_; }
|
virtual overflow_mode overflow() const { return overflow_; }
|
||||||
|
|
@ -75,7 +68,7 @@ namespace psemek::ui
|
||||||
std::string text_;
|
std::string text_;
|
||||||
halignment halign_ = halignment::left;
|
halignment halign_ = halignment::left;
|
||||||
valignment valign_ = valignment::top;
|
valignment valign_ = valignment::top;
|
||||||
multiline_mode multiline_ = multiline_mode::none;
|
bool wrap_ = true;
|
||||||
overflow_mode overflow_ = overflow_mode::ignore;
|
overflow_mode overflow_ = overflow_mode::ignore;
|
||||||
bool skip_spaces_ = false;
|
bool skip_spaces_ = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ namespace psemek::ui
|
||||||
l->set_valign(label::valignment::center);
|
l->set_valign(label::valignment::center);
|
||||||
l->set_halign(label::halignment::center);
|
l->set_halign(label::halignment::center);
|
||||||
l->set_overflow(label::overflow_mode::ellipsis);
|
l->set_overflow(label::overflow_mode::ellipsis);
|
||||||
l->set_multiline(label::multiline_mode::none);
|
|
||||||
b->set_label(l);
|
b->set_label(l);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,9 @@ namespace psemek::ui
|
||||||
on_state_changed();
|
on_state_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void label::set_multiline(multiline_mode value)
|
void label::set_wrap(bool value)
|
||||||
{
|
{
|
||||||
multiline_ = value;
|
wrap_ = value;
|
||||||
on_state_changed();
|
on_state_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,20 +115,13 @@ namespace psemek::ui
|
||||||
for (auto const & g : glyphs)
|
for (auto const & g : glyphs)
|
||||||
raw_bbox |= g.position;
|
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())
|
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::max<std::size_t>(1, std::floor(bbox[1].length() / st->font->size()[1] / (*st->text_scale)))
|
||||||
: std::numeric_limits<std::size_t>::max();
|
: 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;
|
std::vector<std::pair<std::size_t, std::size_t>> lines;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue