/* * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ #ifndef TERMVIEW_HIGHLIGHT_H #define TERMVIEW_HIGHLIGHT_H #include #include "TermPos.h" class TermViewHighlighter { public: virtual ~TermViewHighlighter(); virtual rgb_color ForegroundColor() = 0; virtual rgb_color BackgroundColor() = 0; virtual uint32 AdjustTextAttributes(uint32 attributes); }; class TermViewHighlight { public: TermViewHighlight() : fHighlighter(NULL), fStart(-1, -1), fEnd(-1, -1) { } TermViewHighlighter* Highlighter() const { return fHighlighter; } void SetHighlighter(TermViewHighlighter* highligher) { fHighlighter = highligher; } const TermPos& Start() const { return fStart; } const TermPos& End() const { return fEnd; } bool IsEmpty() const { return fStart == fEnd; } bool RangeContains(const TermPos& pos) const { return pos >= fStart && pos < fEnd; } void SetRange(const TermPos& start, const TermPos& end) { fStart = start; fEnd = end; } void ScrollRange(int32 byLines) { fStart.y -= byLines; fEnd.y -= byLines; } private: TermViewHighlighter* fHighlighter; TermPos fStart; TermPos fEnd; }; #endif // TERMVIEW_HIGHLIGHT_H