haiku/src/apps/terminal/TermViewHighlight.h

84 lines
1.3 KiB
C++

/*
* 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 <GraphicsDefs.h>
#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