xref: /MusicPlayer2/scintilla/src/LineMarker.h (revision 8af74909132ed5e696cb05b6689ae4baf14c1c96)
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