]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiFontMetrics.h
Some improvements to the graphics dialog
[lyx.git] / src / frontends / qt4 / GuiFontMetrics.h
index 8c8daab5cd97aa3d54053df78a318d668910d1fe..3f50dfe5d29902d0516e2b27c3ca2ec32fa4d4e4 100644 (file)
 
 #include "frontends/FontMetrics.h"
 
+#include "support/Cache.h"
 #include "support/docstring.h"
 
-#include <QByteArray>
-#include <QCache>
 #include <QFont>
 #include <QFontMetrics>
 #include <QHash>
 #include <QTextLayout>
 
+#include <memory>
+
 namespace lyx {
 namespace frontend {
 
@@ -57,17 +58,24 @@ public:
                int & ascent,
                int & descent) const;
        virtual void buttonText(docstring const & str,
+               const int offset,
                int & width,
                int & ascent,
                int & descent) const;
+
+       int countExpanders(docstring const & str) const;
        ///
        int width(QString const & str) const;
 
+       /// Return a pointer to a cached QTextLayout object
+       std::shared_ptr<QTextLayout const>
+       getTextLayout(docstring const & s, bool const rtl,
+                     double const wordspacing) const;
+
 private:
 
-       QTextLayout const &
-       getTextLayout(docstring const & s, QFont font,
-                     bool const rtl, double const wordspacing) const;
+       std::pair<int, int> breakAt_helper(docstring const & s, int const x,
+                                          bool const rtl, bool const force) const;
 
        /// The font
        QFont font_;
@@ -77,9 +85,12 @@ private:
 
        /// Cache of char widths
        mutable QHash<char_type, int> width_cache_;
-
        /// Cache of string widths
-       mutable QCache<QByteArray, int> strwidth_cache_;
+       mutable Cache<docstring, int> strwidth_cache_;
+       /// Cache for breakAt
+       mutable Cache<docstring, std::pair<int, int>> breakat_cache_;
+       /// Cache for QTextLayout
+       mutable Cache<docstring, std::shared_ptr<QTextLayout>> qtextlayout_cache_;
 
        struct AscendDescend {
                int ascent;
@@ -93,13 +104,6 @@ private:
        /// Cache of char right bearings
        mutable QHash<char_type, int> rbearing_cache_;
 
-       // A trivial QTextLayout cache
-       mutable QTextLayout tl_cache_;
-       mutable docstring tl_cache_s_;
-       mutable QFont tl_cache_font_;
-       mutable bool tl_cache_rtl_;
-       mutable double tl_cache_wordspacing_;
-
 };
 
 } // namespace frontend