diff options
Diffstat (limited to 'src/PositionCache.h')
| -rw-r--r-- | src/PositionCache.h | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/src/PositionCache.h b/src/PositionCache.h index 7f50c4dec..512ec13f5 100644 --- a/src/PositionCache.h +++ b/src/PositionCache.h @@ -40,6 +40,13 @@ enum PointEnd {  	peSubLineEnd = 0x2  }; +class BidiData { +public: +	std::vector<FontAlias> stylesFonts; +	std::vector<XYPOSITION> widthReprs; +	void Resize(size_t maxLineLength_); +}; +  /**   */  class LineLayout { @@ -66,6 +73,8 @@ public:  	std::unique_ptr<XYPOSITION[]> positions;  	char bracePreviousStyles[2]; +	std::unique_ptr<BidiData> bidiData; +  	// Hotspot support  	Range hotspot; @@ -82,13 +91,16 @@ public:  	void operator=(LineLayout &&) = delete;  	virtual ~LineLayout();  	void Resize(int maxLineLength_); +	void EnsureBidiData();  	void Free();  	void Invalidate(validLevel validity_);  	int LineStart(int line) const; +	int LineLength(int line) const;  	enum class Scope { visibleOnly, includeEnd };  	int LineLastVisible(int line, Scope scope) const;  	Range SubLineRange(int subLine, Scope scope) const;  	bool InLine(int offset, int line) const; +	int SubLineFromPosition(int posInLine, PointEnd pe) const;  	void SetLineStart(int line, int start);  	void SetBracesHighlight(Range rangeLine, const Sci::Position braces[],  		char bracesMatchStyle, int xHighlight, bool ignoreStyle); @@ -99,6 +111,30 @@ public:  	int EndLineStyle() const;  }; +struct ScreenLine : public IScreenLine { +	const LineLayout *ll; +	size_t start; +	size_t len; +	XYPOSITION width; +	XYPOSITION height; +	int ctrlCharPadding; +	XYPOSITION tabWidth; +	int tabWidthMinimumPixels; + +	ScreenLine(const LineLayout *ll_, int subLine, const ViewStyle &vs, XYPOSITION width_, int tabWidthMinimumPixels_); +	virtual ~ScreenLine(); + +	std::string_view Text() const override; +	size_t Length() const override; +	size_t RepresentationCount() const override; +	XYPOSITION Width() const override; +	XYPOSITION Height() const override; +	XYPOSITION TabWidth() const override; +	XYPOSITION TabWidthMinimumPixels() const override; +	const Font *FontOfPosition(size_t position) const override; +	XYPOSITION RepresentationWidth(size_t position) const override; +}; +  /**   */  class LineLayoutCache { | 
