X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt%2FGuiFontMetrics.h;h=5c32ea9de89237cc9e6822ff50b1cb4ed84c86b9;hb=29a8097c3c14aad871c7e396a59542fe47e39ea1;hp=95b577cdf43378479ad1a68705d40edc9c2bc686;hpb=6bbd88accfb76248d00346f308ba1f67f186e094;p=lyx.git diff --git a/src/frontends/qt/GuiFontMetrics.h b/src/frontends/qt/GuiFontMetrics.h index 95b577cdf4..5c32ea9de8 100644 --- a/src/frontends/qt/GuiFontMetrics.h +++ b/src/frontends/qt/GuiFontMetrics.h @@ -27,20 +27,22 @@ namespace lyx { namespace frontend { -struct BreakAtKey +struct TextLayoutHelper; + +struct BreakStringKey { - bool operator==(BreakAtKey const & key) const { - return key.s == s && key.x == x && key.rtl == rtl && key.force == force; + bool operator==(BreakStringKey const & key) const { + return key.s == s && key.first_wid == first_wid && key.wid == wid + && key.rtl == rtl && key.force == force; } docstring s; - int x; + int first_wid; + int wid; bool rtl; bool force; }; -static uint qHash(BreakAtKey const &); - struct TextLayoutKey { bool operator==(TextLayoutKey const & key) const { @@ -79,7 +81,7 @@ public: int signedWidth(docstring const & s) const override; int pos2x(docstring const & s, int pos, bool rtl, double ws) const override; int x2pos(docstring const & s, int & x, bool rtl, double ws) const override; - bool breakAt(docstring & s, int & x, bool rtl, bool force) const override; + Breaks breakString(docstring const & s, int first_wid, int wid, bool rtl, bool force) const override; Dimension const dimension(char_type c) const override; void rectText(docstring const & str, @@ -92,19 +94,21 @@ public: int & ascent, int & descent) const override; - int countExpanders(docstring const & str) const override; /// int width(QString const & str) const; /// Return a pointer to a cached QTextLayout object std::shared_ptr - getTextLayout(docstring const & s, bool const rtl, - double const wordspacing) const; + getTextLayout(docstring const & s, bool const rtl, double const wordspacing) const; private: - std::pair breakAt_helper(docstring const & s, int const x, - bool const rtl, bool const force) const; + Breaks breakString_helper(docstring const & s, int first_wid, int wid, + bool rtl, bool force) const; + + /// A different version of getTextLayout for internal use + std::shared_ptr + getTextLayout(TextLayoutHelper const & tlh, double const wordspacing) const; /// The font QFont font_; @@ -119,8 +123,8 @@ private: mutable QHash width_cache_; /// Cache of string widths mutable Cache strwidth_cache_; - /// Cache for breakAt - mutable Cache> breakat_cache_; + /// Cache for breakString + mutable Cache breakstr_cache_; /// Cache for QTextLayout mutable Cache> qtextlayout_cache_;