X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiPainter.h;h=263b3a851c44cae99c4522f835a3566cb31fa758;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=28225715716ac8f6150502193dfec4b71dbd27ea;hpb=5ddc612b735317d5b22553a63aad7879503e3950;p=lyx.git diff --git a/src/frontends/qt4/GuiPainter.h b/src/frontends/qt4/GuiPainter.h index 2822571571..263b3a851c 100644 --- a/src/frontends/qt4/GuiPainter.h +++ b/src/frontends/qt4/GuiPainter.h @@ -13,9 +13,12 @@ #ifndef GUIPAINTER_H #define GUIPAINTER_H +#include "Color.h" + #include "frontends/Painter.h" #include +#include class QString; @@ -37,7 +40,7 @@ public: virtual void line( int x1, int y1, int x2, int y2, - ColorCode, + Color, line_style = line_solid, line_width = line_thin); @@ -51,7 +54,7 @@ public: int const * xp, int const * yp, int np, - ColorCode, + Color, line_style = line_solid, line_width = line_thin); @@ -59,7 +62,7 @@ public: virtual void rectangle( int x, int y, int w, int h, - ColorCode, + Color, line_style = line_solid, line_width = line_thin); @@ -67,23 +70,20 @@ public: virtual void fillRectangle( int x, int y, int w, int h, - ColorCode); + Color); /// draw an arc virtual void arc( int x, int y, unsigned int w, unsigned int h, int a1, int a2, - ColorCode); + Color); /// draw a pixel - virtual void point( - int x, int y, - ColorCode); + 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) @@ -93,7 +93,54 @@ public: /// draw a char at position x, y (y is the baseline) 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. @@ -102,13 +149,24 @@ private: QString const & str, FontInfo const & f); /// set pen parameters - void setQPainterPen(ColorCode 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); - ColorCode 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