]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt/GuiFontMetrics.h
Change FontMetrics::breakAt to return a position
[lyx.git] / src / frontends / qt / GuiFontMetrics.h
index e9af0ddcd690d954ff33411c2b5cd1a43c4c798a..ef8588a5f81a57ad83688b0dc282ef09e9c506ff 100644 (file)
 namespace lyx {
 namespace frontend {
 
+struct BreakAtKey
+{
+       bool operator==(BreakAtKey const & key) const {
+               return key.s == s && key.x == x && key.rtl == rtl && key.force == force;
+       }
+
+       docstring s;
+       int x;
+       bool rtl;
+       bool force;
+};
+
+struct TextLayoutKey
+{
+       bool operator==(TextLayoutKey const & key) const {
+               return key.s == s && key.rtl == rtl && key.ws == ws;
+       }
+
+       docstring s;
+       bool rtl;
+       double ws;
+};
+
+
 class GuiFontMetrics : public FontMetrics
 {
 public:
@@ -53,7 +77,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;
+       int breakAt(docstring const & s, int & x, bool rtl, bool force) const override;
        Dimension const dimension(char_type c) const override;
 
        void rectText(docstring const & str,
@@ -94,9 +118,9 @@ private:
        /// Cache of string widths
        mutable Cache<docstring, int> strwidth_cache_;
        /// Cache for breakAt
-       mutable Cache<docstring, std::pair<int, int>> breakat_cache_;
+       mutable Cache<BreakAtKey, std::pair<int, int>> breakat_cache_;
        /// Cache for QTextLayout
-       mutable Cache<docstring, std::shared_ptr<QTextLayout>> qtextlayout_cache_;
+       mutable Cache<TextLayoutKey, std::shared_ptr<QTextLayout>> qtextlayout_cache_;
 
        struct AscendDescend {
                int ascent;