// text/line.cpp #include "text/token.hpp" namespace Nimbin { namespace Text { double Line::width(double gap) const { if (tokens.empty()) return 0.0; double w = 0.0; for (const TokenPtr& t : tokens) if (t) w += 2.0 * static_cast(t->half_extent); w += gap * static_cast(tokens.size() - 1); return w; } Token::Data* Line::token_At_Byte(size_t off) const { for (const TokenPtr& t : tokens) if (t && off >= t->byte_begin && off < t->byte_end) return t.get(); return nullptr; } void Line::clear() { tokens.clear(); num_left .reset(); num_right.reset(); number = -1; show_number = false; bounce_off = 0.0; bounce_vel = 0.0; } } // namespace Text } // namespace Nimbin