X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FFontMetrics.h;h=c02606c4384f3536c0759b13503bbc4413e30022;hb=b7f6b979d0f889f08e735f35378bb20ba3788b4b;hp=84000d1c4a3338d01662654c1f2c8b1935d1f3e8;hpb=f65f3adbf73283a288f5d186b51b6b98c9ecb51d;p=lyx.git diff --git a/src/frontends/FontMetrics.h b/src/frontends/FontMetrics.h index 84000d1c4a..c02606c438 100644 --- a/src/frontends/FontMetrics.h +++ b/src/frontends/FontMetrics.h @@ -65,6 +65,14 @@ public: virtual Dimension const defaultDimension() const = 0; /// return the em size virtual int em() const = 0; + /// return the width of a line for underlining + virtual int lineWidth() const = 0; + /// return the distance from the base line to where an underline + /// should be drawn. + virtual int underlinePos() const = 0; + /// return the distance from the base line to where the strike out line + /// should be drawn. + virtual int strikeoutPos() const = 0; /// return the width of the char in the font virtual int width(char_type c) const = 0; @@ -84,15 +92,19 @@ public: * return the x offset of a position in the string. The * direction of the string is forced, and the returned value * is from the left edge of the word, not from the start of the string. + * \param rtl is true for right-to-left layout + * \param ws is the amount of extra inter-word space applied text justication. */ - virtual int pos2x(docstring const & s, int pos, bool rtl) const = 0; + virtual int pos2x(docstring const & s, int pos, bool rtl, double ws) const = 0; /** * return the position in the string for a given x offset. The * direction of the string is forced, and the returned value * is from the left edge of the word, not from the start of the string. * the offset x is updated to match the closest position in the string. + * \param rtl is true for right-to-left layout + * \param ws is the amount of extra inter-word space applied text justication. */ - virtual int x2pos(docstring const & s, int & x, bool rtl) const = 0; + virtual int x2pos(docstring const & s, int & x, bool rtl, double ws) const = 0; /** * Break string at width at most x. * \return true if successful @@ -113,9 +125,10 @@ public: int & descent) const = 0; /** * fill in width,ascent,descent with the values for the - * given string in the font for a button. + * given string in the font for a button with given offset. */ virtual void buttonText(docstring const & str, + const int offset, int & width, int & ascent, int & descent) const = 0; @@ -130,6 +143,10 @@ public: inline int center(char_type c) const { return (rbearing(c) - lbearing(c)) / 2; } + + /// return the number of expanding characters taken into account for + /// increased inter-word spacing during justification + virtual int countExpanders(docstring const & str) const = 0; };