1*8af74909SZhong Yang // Scintilla source code edit control 2*8af74909SZhong Yang /** @file LineMarker.h 3*8af74909SZhong Yang ** Defines the look of a line marker in the margin . 4*8af74909SZhong Yang **/ 5*8af74909SZhong Yang // Copyright 1998-2011 by Neil Hodgson <[email protected]> 6*8af74909SZhong Yang // The License.txt file describes the conditions under which this software may be distributed. 7*8af74909SZhong Yang 8*8af74909SZhong Yang #ifndef LINEMARKER_H 9*8af74909SZhong Yang #define LINEMARKER_H 10*8af74909SZhong Yang 11*8af74909SZhong Yang namespace Scintilla { 12*8af74909SZhong Yang 13*8af74909SZhong Yang class XPM; 14*8af74909SZhong Yang class RGBAImage; 15*8af74909SZhong Yang 16*8af74909SZhong Yang typedef void (*DrawLineMarkerFn)(Surface *surface, PRectangle &rcWhole, Font &fontForCharacter, int tFold, int marginStyle, const void *lineMarker); 17*8af74909SZhong Yang 18*8af74909SZhong Yang /** 19*8af74909SZhong Yang */ 20*8af74909SZhong Yang class LineMarker { 21*8af74909SZhong Yang public: 22*8af74909SZhong Yang enum class FoldPart { undefined, head, body, tail, headWithTail }; 23*8af74909SZhong Yang 24*8af74909SZhong Yang int markType = SC_MARK_CIRCLE; 25*8af74909SZhong Yang ColourDesired fore = ColourDesired(128, 128, 128); 26*8af74909SZhong Yang ColourDesired back = ColourDesired(243, 243, 243); 27*8af74909SZhong Yang ColourDesired backSelected = ColourDesired(0xff, 0x00, 0x00); 28*8af74909SZhong Yang int alpha = SC_ALPHA_NOALPHA; 29*8af74909SZhong Yang std::unique_ptr<XPM> pxpm; 30*8af74909SZhong Yang std::unique_ptr<RGBAImage> image; 31*8af74909SZhong Yang /** Some platforms, notably PLAT_CURSES, do not support Scintilla's native 32*8af74909SZhong Yang * Draw function for drawing line markers. Allow those platforms to override 33*8af74909SZhong Yang * it instead of creating a new method(s) in the Surface class that existing 34*8af74909SZhong Yang * platforms must implement as empty. */ 35*8af74909SZhong Yang DrawLineMarkerFn customDraw = nullptr; 36*8af74909SZhong Yang 37*8af74909SZhong Yang LineMarker() noexcept = default; 38*8af74909SZhong Yang LineMarker(const LineMarker &other); 39*8af74909SZhong Yang LineMarker(LineMarker &&) noexcept = default; 40*8af74909SZhong Yang LineMarker &operator=(const LineMarker& other); 41*8af74909SZhong Yang LineMarker &operator=(LineMarker&&) noexcept = default; 42*8af74909SZhong Yang virtual ~LineMarker() = default; 43*8af74909SZhong Yang 44*8af74909SZhong Yang void SetXPM(const char *textForm); 45*8af74909SZhong Yang void SetXPM(const char *const *linesForm); 46*8af74909SZhong Yang void SetRGBAImage(Point sizeRGBAImage, float scale, const unsigned char *pixelsRGBAImage); 47*8af74909SZhong Yang void Draw(Surface *surface, PRectangle &rcWhole, Font &fontForCharacter, FoldPart part, int marginStyle) const; 48*8af74909SZhong Yang }; 49*8af74909SZhong Yang 50*8af74909SZhong Yang } 51*8af74909SZhong Yang 52*8af74909SZhong Yang #endif 53