mirror of
https://github.com/Chatterino/chatterino2.git
synced 2024-11-13 19:49:51 +01:00
65 lines
1.4 KiB
C++
65 lines
1.4 KiB
C++
|
#pragma once
|
||
|
|
||
|
namespace chatterino {
|
||
|
namespace messages {
|
||
|
struct SelectionItem {
|
||
|
int messageIndex;
|
||
|
int charIndex;
|
||
|
|
||
|
SelectionItem()
|
||
|
{
|
||
|
messageIndex = charIndex = 0;
|
||
|
}
|
||
|
|
||
|
SelectionItem(int _messageIndex, int _charIndex)
|
||
|
{
|
||
|
this->messageIndex = _messageIndex;
|
||
|
this->charIndex = _charIndex;
|
||
|
}
|
||
|
|
||
|
bool isSmallerThan(const SelectionItem &other) const
|
||
|
{
|
||
|
return this->messageIndex < other.messageIndex ||
|
||
|
(this->messageIndex == other.messageIndex && this->charIndex < other.charIndex);
|
||
|
}
|
||
|
|
||
|
bool equals(const SelectionItem &other) const
|
||
|
{
|
||
|
return this->messageIndex == other.messageIndex && this->charIndex == other.charIndex;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
struct Selection {
|
||
|
SelectionItem start;
|
||
|
SelectionItem end;
|
||
|
SelectionItem min;
|
||
|
SelectionItem max;
|
||
|
|
||
|
Selection()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
Selection(const SelectionItem &start, const SelectionItem &end)
|
||
|
: start(start)
|
||
|
, end(end)
|
||
|
, min(start)
|
||
|
, max(end)
|
||
|
{
|
||
|
if (max.isSmallerThan(min)) {
|
||
|
std::swap(this->min, this->max);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool isEmpty() const
|
||
|
{
|
||
|
return this->start.equals(this->end);
|
||
|
}
|
||
|
|
||
|
bool isSingleMessage() const
|
||
|
{
|
||
|
return this->min.messageIndex == this->max.messageIndex;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
}
|