X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiPainter.h;h=263b3a851c44cae99c4522f835a3566cb31fa758;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=39c50a27246e827d294773c3efa3acb358fe5cd9;hpb=a1cec91afaca91968b46e695533c10ad2a3f73d3;p=lyx.git diff --git a/src/frontends/qt4/GuiPainter.h b/src/frontends/qt4/GuiPainter.h index 39c50a2724..263b3a851c 100644 --- a/src/frontends/qt4/GuiPainter.h +++ b/src/frontends/qt4/GuiPainter.h @@ -10,36 +10,37 @@ * Full author contact details are available in file CREDITS. */ -#ifndef QLPAINTER_H -#define QLPAINTER_H - -#include "frontends/Painter.h" +#ifndef GUIPAINTER_H +#define GUIPAINTER_H #include "Color.h" +#include "frontends/Painter.h" + #include +#include class QString; namespace lyx { -class Font; +class FontInfo; namespace frontend { /** - * QLPainter - a painter implementation for Qt4 + * GuiPainter - a painter implementation for Qt4 */ -class QLPainter : public QPainter, public Painter { +class GuiPainter : public QPainter, public Painter { public: - QLPainter(QPaintDevice *); - virtual ~QLPainter(); + GuiPainter(QPaintDevice *); + virtual ~GuiPainter(); /// draw a line from point to point virtual void line( int x1, int y1, int x2, int y2, - Color_color, + Color, line_style = line_solid, line_width = line_thin); @@ -53,7 +54,7 @@ public: int const * xp, int const * yp, int np, - Color_color, + Color, line_style = line_solid, line_width = line_thin); @@ -61,7 +62,7 @@ public: virtual void rectangle( int x, int y, int w, int h, - Color_color, + Color, line_style = line_solid, line_width = line_thin); @@ -69,51 +70,106 @@ public: virtual void fillRectangle( int x, int y, int w, int h, - Color_color); + Color); /// draw an arc virtual void arc( int x, int y, unsigned int w, unsigned int h, int a1, int a2, - Color_color); + Color); /// draw a pixel - virtual void point( - int x, int y, - Color_color); + virtual void point(int x, int y, Color); /// draw an image from the image cache - virtual void image(int x, int y, - int w, int h, + virtual void image(int x, int y, int w, int h, lyx::graphics::Image const & image); /// draw a string at position x, y (y is the baseline) virtual int text(int x, int y, - docstring const & str, Font const & f); + docstring const & str, FontInfo const & f); /// draw a char at position x, y (y is the baseline) - virtual int text(int x, int y, char_type c, Font const & f); + virtual int text(int x, int y, char_type c, FontInfo const & f); + + /// draw a string and enclose it inside a button frame + virtual void buttonText(int x, int baseline, docstring const & s, + FontInfo const & font, bool mouseHover); + + /// start monochrome painting mode, i.e. map every color into [min,max] + virtual void enterMonochromeMode(Color const & min, + Color const & max); + /// leave monochrome painting mode + virtual void leaveMonochromeMode(); + + /** + * Draw a string and enclose it inside a rectangle. If + * back color is specified, the background is cleared with + * the given color. If frame is specified, a thin frame is drawn + * around the text with the given color. + */ + virtual void rectText(int x, int baseline, docstring const & str, + FontInfo const & font, Color back, Color frame); + + /// draw a filled rectangle with the shape of a 3D button + virtual void button(int x, int y, int w, int h, bool mouseHover); + + /// draw a character of a preedit string for cjk support. + virtual int preeditText(int x, int y, + char_type c, FontInfo const & f, preedit_style style); + + void wavyHorizontalLine(int x, int y, int width, ColorCode col); private: + /// check the font, and if set, draw an underline + void underline(FontInfo const & f, + int x, int y, int width); + + /// check the font, and if set, draw an dashed underline + void dashedUnderline(FontInfo const & f, + int x, int y, int width); + + /// check the font, and if set, draw an strike-through line + void strikeoutLine(FontInfo const & f, + int x, int y, int width); + + /// check the font, and if set, draw double underline + void doubleUnderline(FontInfo const & f, + int x, int y, int width); + + /// draw a bevelled button border + void buttonFrame(int x, int y, int w, int h); + /// draw small caps text /** \return width of the drawn text. */ int smallCapsText(int x, int y, - QString const & str, Font const & f); + QString const & str, FontInfo const & f); /// set pen parameters - void setQPainterPen(Color_color col, - line_style ls = line_solid, - line_width lw = line_thin); + void setQPainterPen(QColor const & col, + line_style ls = line_solid, line_width lw = line_thin); - Color::color current_color_; + QColor current_color_; Painter::line_style current_ls_; Painter::line_width current_lw_; + /// + bool const use_pixmap_cache_; + /// + std::stack monochrome_min_; + /// + std::stack monochrome_max_; + /// convert into Qt color, possibly applying the monochrome mode + QColor computeColor(Color col); + /// possibly apply monochrome mode + QColor filterColor(QColor const & col); + /// + QString generateStringSignature(QString const & str, FontInfo const & f); }; } // namespace frontend } // namespace lyx -#endif // QLPAINTER_H +#endif // GUIPAINTER_H