1 /*
2    Drawpile - a collaborative drawing program.
3 
4    Copyright (C) 2008-2019 Calle Laakkonen
5 
6    Drawpile is free software: you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation, either version 3 of the License, or
9    (at your option) any later version.
10 
11    Drawpile is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with Drawpile.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "history.h"
21 #include "../libshared/net/undo.h"
22 
23 namespace canvas {
24 
25 using namespace protocol;
26 
History()27 History::History()
28 	: m_offset(0), m_bytes(0)
29 {
30 }
31 
append(MessagePtr msg)32 void History::append(MessagePtr msg)
33 {
34 	m_messages.append(msg);
35 	m_bytes += msg->length();
36 }
37 
cleanup(int indexlimit)38 void History::cleanup(int indexlimit)
39 {
40 	Q_ASSERT(indexlimit <= end());
41 
42 	while(m_offset < indexlimit) {
43 		m_bytes -= m_messages.takeFirst()->length();
44 		++m_offset;
45 	}
46 }
47 
resetTo(int newoffset)48 void History::resetTo(int newoffset)
49 {
50 	Q_ASSERT(newoffset >= 0);
51 	m_offset = newoffset;
52 	m_messages.clear();
53 	m_bytes = 0;
54 }
55 
56 }
57