1/* 2 * Copyright 2013, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef TERMVIEW_HIGHLIGHT_H 6#define TERMVIEW_HIGHLIGHT_H 7 8 9#include <GraphicsDefs.h> 10 11#include "TermPos.h" 12 13 14class TermViewHighlighter { 15public: 16 virtual ~TermViewHighlighter(); 17 18 virtual rgb_color ForegroundColor() = 0; 19 virtual rgb_color BackgroundColor() = 0; 20 virtual uint32 AdjustTextAttributes(uint32 attributes); 21}; 22 23 24class TermViewHighlight { 25public: 26 TermViewHighlight() 27 : 28 fHighlighter(NULL), 29 fStart(-1, -1), 30 fEnd(-1, -1) 31 { 32 } 33 34 TermViewHighlighter* Highlighter() const 35 { 36 return fHighlighter; 37 } 38 39 void SetHighlighter(TermViewHighlighter* highligher) 40 { 41 fHighlighter = highligher; 42 } 43 44 const TermPos& Start() const 45 { 46 return fStart; 47 } 48 49 const TermPos& End() const 50 { 51 return fEnd; 52 } 53 54 bool IsEmpty() const 55 { 56 return fStart == fEnd; 57 } 58 59 bool RangeContains(const TermPos& pos) const 60 { 61 return pos >= fStart && pos < fEnd; 62 } 63 64 void SetRange(const TermPos& start, const TermPos& end) 65 { 66 fStart = start; 67 fEnd = end; 68 } 69 70 void ScrollRange(int32 byLines) 71 { 72 fStart.y -= byLines; 73 fEnd.y -= byLines; 74 } 75 76private: 77 TermViewHighlighter* fHighlighter; 78 TermPos fStart; 79 TermPos fEnd; 80}; 81 82 83#endif // TERMVIEW_HIGHLIGHT_H 84